From 67593cb38fec2f58debeb088a8951a691c935507 Mon Sep 17 00:00:00 2001 From: Colin Dixon Date: Tue, 1 Nov 2016 15:50:56 -0400 Subject: [PATCH] removing AsciiDoc and tools from docs Change-Id: I407a2ff52f256235a0c32b72d5ae5eb103615c50 Signed-off-by: Colin Dixon --- docs_autotranslation/Makefile | 224 ------- docs_autotranslation/README | 3 - docs_autotranslation/conf.py | 320 ---------- docs_autotranslation/index.rst | 54 -- docs_autotranslation/make.bat | 272 --------- docs_autotranslation/split.py | 159 ----- makeRST.sh | 32 - manuals/.gitignore | 1 - manuals/common/app_support.xml | 109 ---- manuals/developer-guide/pom.xml | 149 ----- .../asciidoc/alto/alto-developer-guide.adoc | 3 - .../src/main/asciidoc/alto/augment.yang | 26 - .../asciidoc/atrium/odl-atrium-all-dev.adoc | 3 - .../bgpcep/odl-bgpcep-bgp-all-dev.adoc | 3 - .../asciidoc/bgpcep/odl-bgpcep-bmp-dev.adoc | 3 - .../bgpcep/odl-bgpcep-pcep-all-dev.adoc | 3 - .../asciidoc/bk-developers-guide-docinfo.xml | 37 -- .../main/asciidoc/bk-developers-guide.adoc | 178 ------ .../src/main/asciidoc/capwap/capwap-dev.adoc | 3 - .../asciidoc/cardinal/odl-cardinal-dev.adoc | 3 - .../asciidoc/controller/config-initial.adoc | 570 ------------------ .../asciidoc/controller/config-java-gen.adoc | 96 --- .../asciidoc/controller/config-logback.adoc | 364 ----------- .../controller/config-sample-deprecated.adoc | 527 ---------------- .../controller/config-threadpool.adoc | 222 ------- .../asciidoc/controller/config-user-yuma.adoc | 448 -------------- .../main/asciidoc/controller/controller.adoc | 3 - .../main/asciidoc/controller/md-sal-faq.adoc | 269 --------- .../controller/netconf/odl-netconf-dev.adoc | 3 - .../asciidoc/core/APIdesignPrinciples_SB.adoc | 132 ---- .../ODL-controller-library-descriptions.adoc | 123 ---- .../src/main/asciidoc/core/config.adoc | 258 -------- .../core/developerkickstarterforodl.adoc | 134 ---- .../core/odl-controller-AD-SAL-overview.adoc | 96 --- .../odl-controller-controller-overview.adoc | 251 -------- .../odl-controller-gitandgerrit_setup.adoc | 144 ----- .../odl-controller-load balancer service.adoc | 345 ----------- .../core/odl-controller-pushpullcode_CLI.adoc | 196 ------ .../asciidoc/core/odl-controller-run.adoc | 87 --- .../core/odl-controller-welcome_project.adoc | 46 -- .../asciidoc/core/odl-restconf-overview.adoc | 121 ---- .../odl-restreference-authentication.adoc | 6 - .../src/main/asciidoc/core/using_mininet.adoc | 151 ----- .../src/main/asciidoc/didm/didm-dev.adoc | 3 - .../src/main/asciidoc/dlux/dlux-core-dev.adoc | 3 - .../src/main/asciidoc/faas/odl-faas-dev.adoc | 3 - .../src/main/asciidoc/iotdm/iotdm-dev.adoc | 3 - .../main/asciidoc/l2switch/l2switch-dev.adoc | 3 - .../src/main/asciidoc/lacp/lacp-dev.adoc | 3 - .../main/asciidoc/natapp/odl-natapp-dev.adoc | 3 - .../netide/netide-developer-guide.adoc | 3 - .../src/main/asciidoc/neutron/neutron.adoc | 3 - .../neutron/odl-neutron-service-dev.adoc | 3 - .../src/main/asciidoc/nic/nic-dev.adoc | 3 - .../ocpplugin/ocp-developer-guide.adoc | 3 - .../odl-controller-controller-overview.adoc | 251 -------- .../odlparent/odlparent-developer.adoc | 3 - .../asciidoc/of-config/of-config-dev.adoc | 3 - .../odl-openflowjava-protocol-dev.adoc | 3 - .../odl-ofp-developer-guide.adoc | 4 - .../main/asciidoc/opflex/agent-ovs-dev.adoc | 3 - .../src/main/asciidoc/opflex/genie-dev.adoc | 3 - .../main/asciidoc/opflex/libopflex-dev.adoc | 3 - .../main/asciidoc/ovsdb/ovsdb-developer.adoc | 4 - .../asciidoc/packetcable/packetcable-dev.adoc | 3 - .../odl-sdninterfaceapp-all-dev.adoc | 3 - .../src/main/asciidoc/sfc/sfc.adoc | 3 - .../src/main/asciidoc/snbi/odl-snbi-dev.adoc | 3 - .../asciidoc/snmp4sdn/snmp4sdn-developer.adoc | 3 - .../src/main/asciidoc/sxp/odl-sxp-dev.adoc | 3 - .../odl-topoprocessing-framework-dev.adoc | 3 - .../main/asciidoc/ttp/ttp-cli-tools-dev.adoc | 3 - .../src/main/asciidoc/ttp/ttp-model-dev.adoc | 3 - .../unimgr/odl-unimgr-channel-dev.adoc | 3 - .../asciidoc/usc/odl-usc-channel-dev.adoc | 3 - .../usecplugin/odl-usecplugin-aaa-dev.adoc | 3 - .../odl-usecplugin-openflow-dev.adoc | 3 - .../src/main/asciidoc/vtn/vtn-dev.adoc | 3 - .../asciidoc/yang-push/odl-yang-push-dev.adoc | 3 - .../main/asciidoc/yangtools/yangtools.adoc | 3 - .../images/800p_OpenDaylight_Login.jpg | Bin 55362 -> 0 bytes .../images/800px-D4a_application_view.jpg | Bin 88908 -> 0 bytes .../resources/images/800px-Framework_view.jpg | Bin 81531 -> 0 bytes .../src/main/resources/images/Add_flow.png | Bin 47561 -> 0 bytes .../resources/images/Applications_AD-SAL.jpg | Bin 87991 -> 0 bytes .../main/resources/images/Building_Plugin.jpg | Bin 90499 -> 0 bytes .../resources/images/Code_Development.jpg | Bin 112184 -> 0 bytes .../images/ConfigurationService-example1.png | Bin 57746 -> 0 bytes .../resources/images/ConnectionService.png | Bin 23716 -> 0 bytes .../images/ConnectionServiceReturn.png | Bin 22046 -> 0 bytes .../Controller-fe-communication-channels.png | Bin 101220 -> 0 bytes .../resources/images/D4a_odl_reps_view.jpg | Bin 94833 -> 0 bytes .../src/main/resources/images/Dataflows.png | Bin 55821 -> 0 bytes .../src/main/resources/images/Devices1.jpg | Bin 211660 -> 0 bytes .../src/main/resources/images/Devices2.jpg | Bin 167522 -> 0 bytes .../resources/images/FlowStatitistics.jpg | Bin 148103 -> 0 bytes .../resources/images/GBP-model-clauses.png | Bin 413286 -> 0 bytes .../images/GBP-model-contract-selection.png | Bin 201868 -> 0 bytes .../resources/images/GBP-model-forwarding.png | Bin 91759 -> 0 bytes .../resources/images/GBP-model-subjects.png | Bin 197398 -> 0 bytes .../src/main/resources/images/GatewayIP.jpg | Bin 119141 -> 0 bytes .../resources/images/Generic_notification.png | Bin 27813 -> 0 bytes .../main/resources/images/Gerrit_settings.jpg | Bin 175277 -> 0 bytes .../main/resources/images/Gerrit_setup.jpg | Bin 78023 -> 0 bytes .../src/main/resources/images/Get.png | Bin 35496 -> 0 bytes .../Group-based_policy_architecture.png | Bin 64960 -> 0 bytes .../src/main/resources/images/Handshake.png | Bin 135616 -> 0 bytes .../main/resources/images/Jenkins_message.jpg | Bin 185919 -> 0 bytes .../src/main/resources/images/L3FwdSample.png | Bin 22234 -> 0 bytes .../src/main/resources/images/MD-SAL.png | Bin 111452 -> 0 bytes .../main/resources/images/MD-SAL_Restconf.jpg | Bin 115416 -> 0 bytes .../resources/images/MessageLifecycle.jpg | Bin 53291 -> 0 bytes .../images/MessageOrderPreservation.jpg | Bin 66119 -> 0 bytes .../main/resources/images/MonitorResponse.png | Bin 62183 -> 0 bytes .../images/MutiController_Example_diagram.png | Bin 90792 -> 0 bytes .../OF1_0_Switch_Handshake_Sequence.png | Bin 72348 -> 0 bytes ...FPlugin_ExtensibilitySupportInOFPlugin.png | Bin 182310 -> 0 bytes .../main/resources/images/OVSDB_Eclipse.png | Bin 123028 -> 0 bytes .../images/Odp_diagram_helium_v6.jpg | Bin 171544 -> 0 bytes .../src/main/resources/images/Persister.jpg | Bin 17464 -> 0 bytes .../resources/images/Pn_possible_states.jpg | Bin 75089 -> 0 bytes .../main/resources/images/PortStatistics.jpg | Bin 173614 -> 0 bytes .../src/main/resources/images/Put.png | Bin 38396 -> 0 bytes .../src/main/resources/images/SAL.jpg | Bin 148579 -> 0 bytes .../main/resources/images/SAL_NB_Plugins.jpg | Bin 88648 -> 0 bytes .../resources/images/SAL_infrastructure.jpg | Bin 97530 -> 0 bytes .../main/resources/images/SAL_nb_pugins.jpg | Bin 120009 -> 0 bytes .../src/main/resources/images/SAL_sb.jpg | Bin 88000 -> 0 bytes .../src/main/resources/images/SDNiWrapper.png | Bin 19220 -> 0 bytes .../src/main/resources/images/SSH_keys.jpg | Bin 84152 -> 0 bytes .../src/main/resources/images/Screenshot6.png | Bin 117776 -> 0 bytes .../src/main/resources/images/Screenshot8.png | Bin 166251 -> 0 bytes .../images/Sign-up with user name.jpg | Bin 16499 -> 0 bytes .../src/main/resources/images/Sign_in.jpg | Bin 179694 -> 0 bytes .../src/main/resources/images/Transaction.jpg | Bin 126029 -> 0 bytes .../bgpcep/PathAttributesSerialization.png | Bin 21882 -> 0 bytes .../src/main/resources/images/bgpcep/RIB.png | Bin 55446 -> 0 bytes .../images/bgpcep/bgp-dependency-tree.png | Bin 65990 -> 0 bytes .../images/bgpcep/pcep-dependency-tree.png | Bin 87315 -> 0 bytes .../resources/images/bgpcep/pcep-parsing.png | Bin 35943 -> 0 bytes .../resources/images/bgpcep/validation.png | Bin 54203 -> 0 bytes .../main/resources/images/codinghints1.png | Bin 382797 -> 0 bytes .../main/resources/images/codinghints2.png | Bin 112905 -> 0 bytes .../main/resources/images/configuration.jpg | Bin 73703 -> 0 bytes .../resources/images/data_packet_service.jpg | Bin 52548 -> 0 bytes .../src/main/resources/images/devices.jpg | Bin 211660 -> 0 bytes .../images/flow-deleted-at-controller.png | Bin 70607 -> 0 bytes .../resources/images/flow-filter-example.png | Bin 88181 -> 0 bytes .../main/resources/images/form_details.jpg | Bin 86686 -> 0 bytes .../gbp_overlay_design_blue_to_red_tunnel.png | Bin 99571 -> 0 bytes .../gbp_overlay_design_red_to_outside.png | Bin 98331 -> 0 bytes .../images/gbp_overlay_design_red_tunnel.png | Bin 99466 -> 0 bytes .../images/gbp_ovs_arp_optimization.png | Bin 49578 -> 0 bytes .../resources/images/gbp_ovs_pipeline.png | Bin 114370 -> 0 bytes .../resources/images/gerrit-code-review.png | Bin 280212 -> 0 bytes .../main/resources/images/gerrit-merged.png | Bin 268753 -> 0 bytes .../resources/images/gerrit_code_review.jpg | Bin 99877 -> 0 bytes .../main/resources/images/gerrit_merged.jpg | Bin 93844 -> 0 bytes .../main/resources/images/learning_switch.jpg | Bin 153612 -> 0 bytes .../images/lispflow-arch-overview-helium.jpg | Bin 96708 -> 0 bytes ...ispflow-technical-arch-overview-helium.jpg | Bin 38090 -> 0 bytes .../resources/images/md-sal-faqs-add_flow.png | Bin 94085 -> 0 bytes .../resources/images/mdsal-sal-sw-eng.png | Bin 89203 -> 0 bytes .../src/main/resources/images/merged_code.jpg | Bin 178937 -> 0 bytes .../resources/images/multiprotocol_AD-SAL.jpg | Bin 80224 -> 0 bytes .../resources/images/netide/arch-engine.jpg | Bin 97490 -> 0 bytes ...neutron-service-developer-architecture.png | Bin 57236 -> 0 bytes .../images/nic/MPLS_VPN_Service_Diagram.png | Bin 41525 -> 0 bytes .../images/ocpplugin/ocp-sb-plugin.jpg | Bin 104222 -> 0 bytes .../ocpplugin/ocpagent-state-machine.jpg | Bin 51046 -> 0 bytes .../ocpplugin/ocpplugin-state-machine.jpg | Bin 44612 -> 0 bytes .../images/ocpplugin/plugin-design.jpg | Bin 45436 -> 0 bytes .../main/resources/images/odl-framework.jpg | Bin 194598 -> 0 bytes .../main/resources/images/odl_overview.jpg | Bin 74851 -> 0 bytes .../openflowjava/500px-TCPChannelPipeline.png | Bin 153096 -> 0 bytes .../openflowjava/500px-UdpChannelPipeline.png | Bin 92593 -> 0 bytes .../openflowjava/800px-Extensibility.png | Bin 219702 -> 0 bytes .../openflowjava/800px-Extensibility2.png | Bin 142161 -> 0 bytes .../images/openflowjava/Library_lifecycle.png | Bin 116792 -> 0 bytes .../openflowplugin/odl-ofp-add-flow.png | Bin 73053 -> 0 bytes .../openflowplugin/odl-ofp-feature-tree.png | Bin 75626 -> 0 bytes .../openflowplugin/odl-ofp-handshake.png | Bin 135045 -> 0 bytes .../odl-ofp-ofplugin-debug-stats.png | Bin 283098 -> 0 bytes .../odl-ofp-session-establishment.jpg | Bin 586240 -> 0 bytes .../images/openstack_integration.png | Bin 32846 -> 0 bytes .../images/overloadProtectionBrief.png | Bin 118143 -> 0 bytes .../images/ovsdb-sb-active-connection.jpg | Bin 108706 -> 0 bytes .../resources/images/ovsdb-sb-config-crud.jpg | Bin 147341 -> 0 bytes .../resources/images/ovsdb-sb-oper-crud.jpg | Bin 106216 -> 0 bytes .../images/ovsdb-sb-passive-connection.jpg | Bin 99240 -> 0 bytes .../images/ovsdb/ODL_SFC_Architecture.png | Bin 41246 -> 0 bytes .../resources/images/pcmm-apidoc-explorer.png | Bin 73480 -> 0 bytes .../resources/images/pcmm-architecture.png | Bin 117776 -> 0 bytes .../resources/images/pcmm-depends-map.png | Bin 151036 -> 0 bytes .../main/resources/images/pcmm-dlux-flows.png | Bin 22036 -> 0 bytes .../main/resources/images/pcmm-dlux-login.png | Bin 34310 -> 0 bytes .../main/resources/images/pcmm-dlux-nodes.png | Bin 30613 -> 0 bytes .../main/resources/images/pcmm-postman.png | Bin 118085 -> 0 bytes .../main/resources/images/pcmm-wireshark.png | Bin 166251 -> 0 bytes .../resources/images/plugin-dev-process.png | Bin 80900 -> 0 bytes .../resources/images/sal_architecture.jpg | Bin 105766 -> 0 bytes .../images/sfc-sf-selection-arch.png | Bin 23664 -> 0 bytes .../images/sfc/sb-rest-architecture.png | Bin 25340 -> 0 bytes .../images/sfc/sfc-ovs-architecture.png | Bin 61679 -> 0 bytes .../src/main/resources/images/sign-up.jpg | Bin 27088 -> 0 bytes .../main/resources/images/signup_image.jpg | Bin 16499 -> 0 bytes .../src/main/resources/images/smallnew.png | Bin 292 -> 0 bytes .../resources/images/snbi/docker_snbi.png | Bin 18248 -> 0 bytes .../resources/images/snbi/first_fe_bs.png | Bin 86568 -> 0 bytes .../main/resources/images/snbi/snbi_arch.png | Bin 70667 -> 0 bytes .../images/snmp4sdn_in_odl_architecture.jpg | Bin 55273 -> 0 bytes .../resources/images/snmp4sdn_modules.jpg | Bin 127626 -> 0 bytes .../resources/images/southbound_sample.jpg | Bin 116227 -> 0 bytes .../src/main/resources/images/tiger.png | Bin 6515 -> 0 bytes .../Inventory_Rendering_Use_case.png | Bin 156841 -> 0 bytes .../Inventory_model_listener_diagram.png | Bin 51929 -> 0 bytes .../images/topoprocessing/LinkComputation.png | Bin 29179 -> 0 bytes .../LinkComputationFlowDiagram.png | Bin 74086 -> 0 bytes .../images/topoprocessing/ModelAdapter.png | Bin 6479 -> 0 bytes .../Network_topology_model_flow_diagram.png | Bin 24984 -> 0 bytes ...logyRequestHandler_classesRelationship.png | Bin 95999 -> 0 bytes .../images/topoprocessing/architecture.png | Bin 368953 -> 0 bytes .../images/topoprocessing/wrapper.png | Bin 18572 -> 0 bytes .../images/ttp-screen1-basic-auth.png | Bin 196488 -> 0 bytes .../images/ttp-screen2-applied-basic-auth.png | Bin 151306 -> 0 bytes .../resources/images/ttp-screen3-sent-put.png | Bin 162347 -> 0 bytes .../resources/images/ttp-screen4-get-json.png | Bin 170995 -> 0 bytes .../resources/images/ttp-screen5-get-xml.png | Bin 239897 -> 0 bytes .../images/vlanmap-using-mininet.png | Bin 38913 -> 0 bytes .../main/resources/images/vtn-stations.png | Bin 63045 -> 0 bytes .../images/vtn/OpenStackDeveloperGuide.png | Bin 103979 -> 0 bytes .../vtn/vtn-coordinator-api-architecture.png | Bin 8296 -> 0 bytes .../vtn/vtn-coordinator-architecture.png | Bin 20581 -> 0 bytes ...tn-coordinator-odc-driver-architecture.png | Bin 11606 -> 0 bytes .../vtn/vtn-coordinator-uppl-architecture.png | Bin 10325 -> 0 bytes .../images/vtn/vtn-manager-architecture.png | Bin 84685 -> 0 bytes .../resources/images/vtn/vtn-overview.png | Bin 308086 -> 0 bytes .../images/vtn/vtn-tc-architecture.png | Bin 9001 -> 0 bytes .../images/vtn/vtn-upll-architecture.png | Bin 11055 -> 0 bytes manuals/pom.xml | 31 - manuals/readme/pom.xml | 149 ----- .../src/main/asciidoc/readme-docinfo.xml | 37 -- manuals/readme/src/main/asciidoc/readme.adoc | 19 - .../asciidoc/template_developer_guide.adoc | 40 -- .../asciidoc/template_installation_guide.adoc | 48 -- .../main/asciidoc/template_release_notes.adoc | 43 -- .../src/main/asciidoc/template_tutorial.adoc | 26 - .../main/asciidoc/template_user_guide.adoc | 81 --- manuals/user-guide/pom.xml | 149 ----- .../user-guide/src/main/asciidoc/aaa/aaa.adoc | 3 - .../main/asciidoc/alto/alto-user-guide.adoc | 3 - .../src/main/asciidoc/alto/example-input.json | 50 -- .../alto/example-rfc7285-networkmap.json | 27 - .../asciidoc/atrium/odl-atrium-all-user.adoc | 3 - .../bgpcep/odl-bgpcep-bgp-all-user.adoc | 3 - .../asciidoc/bgpcep/odl-bgpcep-bmp-user.adoc | 3 - .../bgpcep/odl-bgpcep-pcep-all-user.adoc | 3 - .../main/asciidoc/bk-user-guide-docinfo.xml | 37 -- .../src/main/asciidoc/bk-user-guide.adoc | 102 ---- .../src/main/asciidoc/bk-user-guide.adoc.orig | 82 --- .../src/main/asciidoc/capwap/capwap-user.adoc | 3 - .../asciidoc/cardinal/odl-cardinal-user.adoc | 3 - .../centinel/centinel-user-guide.adoc | 3 - .../controller/netconf/odl-netconf-user.adoc | 4 - .../src/main/asciidoc/didm/didm-user.adoc | 3 - .../src/main/asciidoc/faas/odl-faas-user.adoc | 3 - .../asciidoc/genius/genius-user-guide.adoc | 3 - .../odl-groupbasedpolicy-user-guide.adoc | 3 - .../main/asciidoc/l2switch/l2switch-user.adoc | 3 - .../src/main/asciidoc/lacp/lacp-user.adoc | 3 - .../lfm/lispflowmapping-msmr-user.adoc | 3 - .../main/asciidoc/natapp/odl-natapp-user.adoc | 3 - .../netide/odl-netide-user-guide.adoc | 3 - .../neutron/odl-neutron-service-user.adoc | 3 - .../src/main/asciidoc/nic/nic-user.adoc | 3 - .../asciidoc/ocpplugin/ocp-user-guide.adoc | 3 - .../asciidoc/of-config/ofconfig-user.adoc | 3 - .../openflowplugin/odl-ofp-user-guide.adoc | 3 - .../main/asciidoc/opflex/agent-ovs-user.adoc | 3 - .../ovsdb/odl-ovsdb-netvirt-user-guide.adoc | 3 - .../packetcable/packetcable-user.adoc | 3 - .../odl-sdninterfaceapp-all-user.adoc | 3 - .../user-guide/src/main/asciidoc/sfc/sfc.adoc | 3 - .../src/main/asciidoc/snbi/odl-snbi-user.adoc | 3 - .../main/asciidoc/snmp/snmp-user-guide.adoc | 3 - .../snmp4sdn/snmp4sdn-user-guide.adoc | 3 - .../src/main/asciidoc/sxp/odl-sxp-user.adoc | 3 - .../main/asciidoc/tsdr/tsdr-user-guide.adoc | 3 - .../main/asciidoc/ttp/ttp-cli-tools-user.adoc | 3 - .../src/main/asciidoc/unimgr/unimgr-user.adoc | 3 - .../asciidoc/usc/odl-usc-channel-user.adoc | 3 - .../usecplugin/odl-usecplugin-aaa-user.adoc | 3 - .../odl-usecplugin-openflow-user.adoc | 3 - .../asciidoc/vpnservice/vpnservice-user.adoc | 3 - .../src/main/asciidoc/vtn/vtn-user.adoc | 3 - .../yang-push/odl-yang-push-user.adoc | 3 - .../main/asciidoc/yangide/yangide-user.adoc | 3 - .../images/ODL-Helium-dependency.png | Bin 49650 -> 0 bytes .../resources/images/ODL_lfm_Be_component.jpg | Bin 42354 -> 0 bytes .../images/Odp_diagram_helium_v6.jpg | Bin 171544 -> 0 bytes .../src/main/resources/images/Screenshot1.png | Bin 73480 -> 0 bytes .../src/main/resources/images/Screenshot2.png | Bin 30613 -> 0 bytes .../src/main/resources/images/Screenshot3.png | Bin 22036 -> 0 bytes .../src/main/resources/images/Screenshot4.png | Bin 34310 -> 0 bytes .../src/main/resources/images/Screenshot5.png | Bin 118085 -> 0 bytes .../src/main/resources/images/Screenshot6.png | Bin 117776 -> 0 bytes .../src/main/resources/images/dlux-login.png | Bin 181107 -> 0 bytes .../main/resources/images/dlux-topology.png | Bin 156682 -> 0 bytes .../images/dlux-yang-api-specification.png | Bin 298739 -> 0 bytes .../images/dlux-yang-list-button1.png | Bin 388971 -> 0 bytes .../images/dlux-yang-list-elements.png | Bin 427930 -> 0 bytes .../images/dlux-yang-list-warning.png | Bin 384555 -> 0 bytes .../images/dlux-yang-sub-api-screen.png | Bin 383969 -> 0 bytes .../resources/images/dlux-yang-topology.png | Bin 414556 -> 0 bytes .../resources/images/dlux-yang-ui-screen.png | Bin 278035 -> 0 bytes .../groupbasedpolicy/GBPTerminology1.png | Bin 81455 -> 0 bytes .../groupbasedpolicy/GBPTerminology2.png | Bin 83411 -> 0 bytes .../groupbasedpolicy/GBPTerminology3.png | Bin 85730 -> 0 bytes .../GBP_AccessModel_simple.png | Bin 38124 -> 0 bytes .../GBP_Endpoint_EPG_Contract.png | Bin 36423 -> 0 bytes .../GBP_Endpoint_EPG_Forwarding.png | Bin 25629 -> 0 bytes .../GBP_ForwardingModel_simple.png | Bin 35236 -> 0 bytes .../GBP_High-levelBerylliumArchitecture.png | Bin 68530 -> 0 bytes .../GBP_High-levelExtraRenderer.png | Bin 64388 -> 0 bytes ...h-levelBerylliumArchitectureEvolution2.png | Bin 75626 -> 0 bytes .../IntentSystemPolicySurfaces.png | Bin 51626 -> 0 bytes .../groupbasedpolicy/gbp-neutron-mapper.png | Bin 220606 -> 0 bytes .../group-based-policy-architecture.png | Bin 64960 -> 0 bytes .../groupbasedpolicy/neutron-gbp-mappings.png | Bin 69076 -> 0 bytes .../neutronmapper-gbp-mapping-dhcp.png | Bin 58234 -> 0 bytes ...tronmapper-gbp-mapping-network-example.png | Bin 32620 -> 0 bytes .../neutronmapper-gbp-mapping-network.png | Bin 59843 -> 0 bytes ...neutronmapper-gbp-mapping-port-example.png | Bin 54758 -> 0 bytes .../neutronmapper-gbp-mapping-port.png | Bin 55836 -> 0 bytes .../neutronmapper-gbp-mapping-router.png | Bin 63446 -> 0 bytes ...eutronmapper-gbp-mapping-securitygroup.png | Bin 58556 -> 0 bytes ...utronmapper-gbp-mapping-subnet-example.png | Bin 42093 -> 0 bytes .../neutronmapper-gbp-mapping-subnet.png | Bin 55747 -> 0 bytes .../ofoverlay-1-components.png | Bin 108917 -> 0 bytes .../ofoverlay-2-components.png | Bin 30304 -> 0 bytes .../ofoverlay-3-flowpipeline.png | Bin 20085 -> 0 bytes .../groupbasedpolicy/sfc-1-topology.png | Bin 31351 -> 0 bytes .../groupbasedpolicy/sfc-2-symmetric.png | Bin 48076 -> 0 bytes .../groupbasedpolicy/sfc-3-asymmetric.png | Bin 47595 -> 0 bytes .../groupbasedpolicy/ui-1-basicview.png | Bin 47139 -> 0 bytes .../groupbasedpolicy/ui-2-governanceview.png | Bin 58243 -> 0 bytes .../ui-3-governanceview-expressed.png | Bin 166986 -> 0 bytes .../ui-4-governanceview-delivered-0.png | Bin 232230 -> 0 bytes ...i-4-governanceview-delivered-1-subject.png | Bin 46004 -> 0 bytes .../ui-4-governanceview-delivered-2-epg.png | Bin 46137 -> 0 bytes .../ui-4-governanceview-renderer.png | Bin 124231 -> 0 bytes .../groupbasedpolicy/ui-5-expresssion-1.png | Bin 60221 -> 0 bytes .../groupbasedpolicy/ui-5-expresssion-2.png | Bin 90009 -> 0 bytes .../groupbasedpolicy/ui-5-expresssion-3.png | Bin 113774 -> 0 bytes .../groupbasedpolicy/ui-5-expresssion-4.png | Bin 77106 -> 0 bytes .../images/groupbasedpolicy/ui-6-wizard.png | Bin 118418 -> 0 bytes .../images/l2switch-address-observations.png | Bin 253898 -> 0 bytes .../main/resources/images/l2switch-hosts.png | Bin 165081 -> 0 bytes .../resources/images/l2switch-stp-status.png | Bin 208345 -> 0 bytes .../resources/images/netide/netide-flow.jpg | Bin 77333 -> 0 bytes .../resources/images/netide/netidearch.jpg | Bin 97490 -> 0 bytes .../odl-neutron-service-architecture.png | Bin 33446 -> 0 bytes .../resources/images/nic/Redirect_flow.png | Bin 98313 -> 0 bytes .../resources/images/nic/Service_Chaining.png | Bin 42430 -> 0 bytes .../images/ocpplugin/dlux-ocp-apis.jpg | Bin 101787 -> 0 bytes .../images/ocpplugin/dlux-ocp-nodes.jpg | Bin 50318 -> 0 bytes .../images/ocpplugin/message_flow.jpg | Bin 107152 -> 0 bytes .../images/ocpplugin/ocp-sb-plugin.jpg | Bin 104222 -> 0 bytes .../images/ocpplugin/plugin-config.jpg | Bin 254981 -> 0 bytes .../images/ocpplugin/plugin-design.jpg | Bin 45436 -> 0 bytes .../resources/images/odl-architecture.png | Bin 606625 -> 0 bytes .../images/openflowplugin/host-only-vbox.png | Bin 201972 -> 0 bytes .../images/openflowplugin/plugin_design.jpg | Bin 100304 -> 0 bytes .../ovsdb/ovsdb-netvirt-architecture.jpg | Bin 33321 -> 0 bytes .../src/main/resources/images/pcmm-docsis.png | Bin 89184 -> 0 bytes .../pcmm-technical-arch-overview-helium.png | Bin 99726 -> 0 bytes .../main/resources/images/plugin_design.jpg | Bin 100304 -> 0 bytes .../images/sfc/RESTClient-snapshot.png | Bin 27533 -> 0 bytes .../images/sfc/karaf-webui-select-a-type.png | Bin 14544 -> 0 bytes .../images/sfc/sb-rest-architecture-user.png | Bin 25828 -> 0 bytes .../images/sfc/sf-rendered-service-path.png | Bin 23602 -> 0 bytes .../resources/images/sfc/sf-schedule-type.png | Bin 43328 -> 0 bytes .../images/sfc/sf-selection-arch.png | Bin 36004 -> 0 bytes .../sf-selectionalgorithm-observations.png | Bin 38522 -> 0 bytes .../images/sfc/sfc-ovs-architecture-user.png | Bin 25288 -> 0 bytes .../images/sfc/sfc-ui-architecture.png | Bin 19001 -> 0 bytes .../images/sfc/sfcofrenderer_architecture.png | Bin 49251 -> 0 bytes .../images/sfc/sfcofrenderer_nwtopo.png | Bin 37630 -> 0 bytes .../main/resources/images/snbi/snbi_arch.png | Bin 70667 -> 0 bytes .../images/snmp4sdn_getvlantable_postman.jpg | Bin 156545 -> 0 bytes .../images/snmp4sdn_in_odl_architecture.jpg | Bin 55273 -> 0 bytes .../images/vtn/Creare_Network_Step_1.png | Bin 108436 -> 0 bytes .../resources/images/vtn/Create_Network.png | Bin 111630 -> 0 bytes .../images/vtn/Create_Network_Step_2.png | Bin 114921 -> 0 bytes .../images/vtn/Create_Network_Step_3.png | Bin 114333 -> 0 bytes .../main/resources/images/vtn/Dlux_login.png | Bin 206245 -> 0 bytes .../resources/images/vtn/Dlux_topology.png | Bin 190482 -> 0 bytes .../How_to_provision_virtual_L2_network.png | Bin 196405 -> 0 bytes .../main/resources/images/vtn/Hypervisors.png | Bin 122615 -> 0 bytes .../resources/images/vtn/Instance_Console.png | Bin 108316 -> 0 bytes .../images/vtn/Instance_Creation.png | Bin 111192 -> 0 bytes .../resources/images/vtn/Instance_ping.png | Bin 109383 -> 0 bytes .../resources/images/vtn/Launch_Instance.png | Bin 128676 -> 0 bytes .../images/vtn/Launch_Instance_network.png | Bin 113633 -> 0 bytes .../images/vtn/Load_All_Instances.png | Bin 147028 -> 0 bytes .../images/vtn/Mininet_Configuration.png | Bin 72196 -> 0 bytes .../vtn/MutiController_Example_diagram.png | Bin 176565 -> 0 bytes .../images/vtn/Network_Created_Step_4.png | Bin 114295 -> 0 bytes .../resources/images/vtn/OpenStackGui.png | Bin 95088 -> 0 bytes .../images/vtn/OpenStack_Demo_Picture.png | Bin 150840 -> 0 bytes .../src/main/resources/images/vtn/Pathmap.png | Bin 123322 -> 0 bytes .../vtn/Service_Chaining_With_One_Service.png | Bin 43894 -> 0 bytes .../Service_Chaining_With_One_Service_LLD.png | Bin 86079 -> 0 bytes ...Chaining_With_One_Service_Verification.png | Bin 43894 -> 0 bytes .../Service_Chaining_With_Two_Services.png | Bin 49441 -> 0 bytes ...Service_Chaining_With_Two_Services_LLD.png | Bin 78771 -> 0 bytes .../images/vtn/Single_Controller_Mapping.png | Bin 68332 -> 0 bytes .../src/main/resources/images/vtn/Tenant2.png | Bin 52567 -> 0 bytes .../src/main/resources/images/vtn/VTN_API.jpg | Bin 12776 -> 0 bytes .../resources/images/vtn/VTN_Construction.jpg | Bin 24760 -> 0 bytes .../resources/images/vtn/VTN_Flow_Filter.jpg | Bin 36519 -> 0 bytes .../main/resources/images/vtn/VTN_Mapping.jpg | Bin 65904 -> 0 bytes .../resources/images/vtn/VTN_Overview.jpg | Bin 125691 -> 0 bytes .../images/vtn/flow_filter_example.png | Bin 80365 -> 0 bytes .../images/vtn/setup_diagram_SCVMM.png | Bin 186492 -> 0 bytes .../images/vtn/vlanmap_using_mininet.png | Bin 38913 -> 0 bytes ...vtn-single-controller-topology-example.png | Bin 129449 -> 0 bytes .../images/vtn/vtn_devstack_setup.png | Bin 63321 -> 0 bytes .../resources/images/vtn/vtn_stations.png | Bin 55821 -> 0 bytes pom.xml | 70 --- 430 files changed, 7659 deletions(-) delete mode 100644 docs_autotranslation/Makefile delete mode 100644 docs_autotranslation/README delete mode 100644 docs_autotranslation/conf.py delete mode 100644 docs_autotranslation/index.rst delete mode 100644 docs_autotranslation/make.bat delete mode 100755 docs_autotranslation/split.py delete mode 100755 makeRST.sh delete mode 100644 manuals/.gitignore delete mode 100644 manuals/common/app_support.xml delete mode 100644 manuals/developer-guide/pom.xml delete mode 100644 manuals/developer-guide/src/main/asciidoc/alto/alto-developer-guide.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/alto/augment.yang delete mode 100644 manuals/developer-guide/src/main/asciidoc/atrium/odl-atrium-all-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/bgpcep/odl-bgpcep-bgp-all-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/bgpcep/odl-bgpcep-bmp-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/bgpcep/odl-bgpcep-pcep-all-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/bk-developers-guide-docinfo.xml delete mode 100644 manuals/developer-guide/src/main/asciidoc/bk-developers-guide.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/capwap/capwap-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/cardinal/odl-cardinal-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/controller/config-initial.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/controller/config-java-gen.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/controller/config-logback.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/controller/config-sample-deprecated.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/controller/config-threadpool.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/controller/config-user-yuma.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/controller/controller.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/controller/md-sal-faq.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/controller/netconf/odl-netconf-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/core/APIdesignPrinciples_SB.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/core/ODL-controller-library-descriptions.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/core/config.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/core/developerkickstarterforodl.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/core/odl-controller-AD-SAL-overview.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/core/odl-controller-controller-overview.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/core/odl-controller-gitandgerrit_setup.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/core/odl-controller-load balancer service.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/core/odl-controller-pushpullcode_CLI.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/core/odl-controller-run.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/core/odl-controller-welcome_project.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/core/odl-restconf-overview.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/core/odl-restreference-authentication.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/core/using_mininet.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/didm/didm-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/dlux/dlux-core-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/faas/odl-faas-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/iotdm/iotdm-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/l2switch/l2switch-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/lacp/lacp-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/natapp/odl-natapp-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/netide/netide-developer-guide.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/neutron/neutron.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/neutron/odl-neutron-service-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/nic/nic-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/ocpplugin/ocp-developer-guide.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/odl-controller-controller-overview.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/odlparent/odlparent-developer.adoc delete mode 100755 manuals/developer-guide/src/main/asciidoc/of-config/of-config-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/openflowjava/odl-openflowjava-protocol-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/openflowplugin/odl-ofp-developer-guide.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/opflex/agent-ovs-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/opflex/genie-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/opflex/libopflex-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/ovsdb/ovsdb-developer.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/packetcable/packetcable-dev.adoc delete mode 100755 manuals/developer-guide/src/main/asciidoc/sdninterfaceapp/odl-sdninterfaceapp-all-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/sfc/sfc.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/snbi/odl-snbi-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/snmp4sdn/snmp4sdn-developer.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/sxp/odl-sxp-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/topoprocessing/odl-topoprocessing-framework-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/ttp/ttp-cli-tools-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/ttp/ttp-model-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/unimgr/odl-unimgr-channel-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/usc/odl-usc-channel-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/usecplugin/odl-usecplugin-aaa-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/usecplugin/odl-usecplugin-openflow-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/vtn/vtn-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/yang-push/odl-yang-push-dev.adoc delete mode 100644 manuals/developer-guide/src/main/asciidoc/yangtools/yangtools.adoc delete mode 100644 manuals/developer-guide/src/main/resources/images/800p_OpenDaylight_Login.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/800px-D4a_application_view.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/800px-Framework_view.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/Add_flow.png delete mode 100644 manuals/developer-guide/src/main/resources/images/Applications_AD-SAL.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/Building_Plugin.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/Code_Development.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/ConfigurationService-example1.png delete mode 100644 manuals/developer-guide/src/main/resources/images/ConnectionService.png delete mode 100644 manuals/developer-guide/src/main/resources/images/ConnectionServiceReturn.png delete mode 100644 manuals/developer-guide/src/main/resources/images/Controller-fe-communication-channels.png delete mode 100644 manuals/developer-guide/src/main/resources/images/D4a_odl_reps_view.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/Dataflows.png delete mode 100644 manuals/developer-guide/src/main/resources/images/Devices1.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/Devices2.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/FlowStatitistics.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/GBP-model-clauses.png delete mode 100644 manuals/developer-guide/src/main/resources/images/GBP-model-contract-selection.png delete mode 100644 manuals/developer-guide/src/main/resources/images/GBP-model-forwarding.png delete mode 100644 manuals/developer-guide/src/main/resources/images/GBP-model-subjects.png delete mode 100644 manuals/developer-guide/src/main/resources/images/GatewayIP.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/Generic_notification.png delete mode 100644 manuals/developer-guide/src/main/resources/images/Gerrit_settings.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/Gerrit_setup.jpg delete mode 100755 manuals/developer-guide/src/main/resources/images/Get.png delete mode 100644 manuals/developer-guide/src/main/resources/images/Group-based_policy_architecture.png delete mode 100644 manuals/developer-guide/src/main/resources/images/Handshake.png delete mode 100644 manuals/developer-guide/src/main/resources/images/Jenkins_message.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/L3FwdSample.png delete mode 100755 manuals/developer-guide/src/main/resources/images/MD-SAL.png delete mode 100644 manuals/developer-guide/src/main/resources/images/MD-SAL_Restconf.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/MessageLifecycle.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/MessageOrderPreservation.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/MonitorResponse.png delete mode 100644 manuals/developer-guide/src/main/resources/images/MutiController_Example_diagram.png delete mode 100644 manuals/developer-guide/src/main/resources/images/OF1_0_Switch_Handshake_Sequence.png delete mode 100644 manuals/developer-guide/src/main/resources/images/OFPlugin_ExtensibilitySupportInOFPlugin.png delete mode 100644 manuals/developer-guide/src/main/resources/images/OVSDB_Eclipse.png delete mode 100644 manuals/developer-guide/src/main/resources/images/Odp_diagram_helium_v6.jpg delete mode 100755 manuals/developer-guide/src/main/resources/images/Persister.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/Pn_possible_states.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/PortStatistics.jpg delete mode 100755 manuals/developer-guide/src/main/resources/images/Put.png delete mode 100644 manuals/developer-guide/src/main/resources/images/SAL.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/SAL_NB_Plugins.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/SAL_infrastructure.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/SAL_nb_pugins.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/SAL_sb.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/SDNiWrapper.png delete mode 100644 manuals/developer-guide/src/main/resources/images/SSH_keys.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/Screenshot6.png delete mode 100644 manuals/developer-guide/src/main/resources/images/Screenshot8.png delete mode 100644 manuals/developer-guide/src/main/resources/images/Sign-up with user name.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/Sign_in.jpg delete mode 100755 manuals/developer-guide/src/main/resources/images/Transaction.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/bgpcep/PathAttributesSerialization.png delete mode 100644 manuals/developer-guide/src/main/resources/images/bgpcep/RIB.png delete mode 100755 manuals/developer-guide/src/main/resources/images/bgpcep/bgp-dependency-tree.png delete mode 100755 manuals/developer-guide/src/main/resources/images/bgpcep/pcep-dependency-tree.png delete mode 100644 manuals/developer-guide/src/main/resources/images/bgpcep/pcep-parsing.png delete mode 100644 manuals/developer-guide/src/main/resources/images/bgpcep/validation.png delete mode 100644 manuals/developer-guide/src/main/resources/images/codinghints1.png delete mode 100644 manuals/developer-guide/src/main/resources/images/codinghints2.png delete mode 100644 manuals/developer-guide/src/main/resources/images/configuration.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/data_packet_service.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/devices.jpg delete mode 100755 manuals/developer-guide/src/main/resources/images/flow-deleted-at-controller.png delete mode 100644 manuals/developer-guide/src/main/resources/images/flow-filter-example.png delete mode 100644 manuals/developer-guide/src/main/resources/images/form_details.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/gbp_overlay_design_blue_to_red_tunnel.png delete mode 100644 manuals/developer-guide/src/main/resources/images/gbp_overlay_design_red_to_outside.png delete mode 100644 manuals/developer-guide/src/main/resources/images/gbp_overlay_design_red_tunnel.png delete mode 100644 manuals/developer-guide/src/main/resources/images/gbp_ovs_arp_optimization.png delete mode 100644 manuals/developer-guide/src/main/resources/images/gbp_ovs_pipeline.png delete mode 100644 manuals/developer-guide/src/main/resources/images/gerrit-code-review.png delete mode 100644 manuals/developer-guide/src/main/resources/images/gerrit-merged.png delete mode 100644 manuals/developer-guide/src/main/resources/images/gerrit_code_review.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/gerrit_merged.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/learning_switch.jpg delete mode 100755 manuals/developer-guide/src/main/resources/images/lispflow-arch-overview-helium.jpg delete mode 100755 manuals/developer-guide/src/main/resources/images/lispflow-technical-arch-overview-helium.jpg delete mode 100755 manuals/developer-guide/src/main/resources/images/md-sal-faqs-add_flow.png delete mode 100755 manuals/developer-guide/src/main/resources/images/mdsal-sal-sw-eng.png delete mode 100644 manuals/developer-guide/src/main/resources/images/merged_code.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/multiprotocol_AD-SAL.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/netide/arch-engine.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/neutron/odl-neutron-service-developer-architecture.png delete mode 100644 manuals/developer-guide/src/main/resources/images/nic/MPLS_VPN_Service_Diagram.png delete mode 100644 manuals/developer-guide/src/main/resources/images/ocpplugin/ocp-sb-plugin.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/ocpplugin/ocpagent-state-machine.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/ocpplugin/ocpplugin-state-machine.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/ocpplugin/plugin-design.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/odl-framework.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/odl_overview.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/openflowjava/500px-TCPChannelPipeline.png delete mode 100644 manuals/developer-guide/src/main/resources/images/openflowjava/500px-UdpChannelPipeline.png delete mode 100644 manuals/developer-guide/src/main/resources/images/openflowjava/800px-Extensibility.png delete mode 100644 manuals/developer-guide/src/main/resources/images/openflowjava/800px-Extensibility2.png delete mode 100644 manuals/developer-guide/src/main/resources/images/openflowjava/Library_lifecycle.png delete mode 100644 manuals/developer-guide/src/main/resources/images/openflowplugin/odl-ofp-add-flow.png delete mode 100644 manuals/developer-guide/src/main/resources/images/openflowplugin/odl-ofp-feature-tree.png delete mode 100644 manuals/developer-guide/src/main/resources/images/openflowplugin/odl-ofp-handshake.png delete mode 100644 manuals/developer-guide/src/main/resources/images/openflowplugin/odl-ofp-ofplugin-debug-stats.png delete mode 100644 manuals/developer-guide/src/main/resources/images/openflowplugin/odl-ofp-session-establishment.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/openstack_integration.png delete mode 100644 manuals/developer-guide/src/main/resources/images/overloadProtectionBrief.png delete mode 100644 manuals/developer-guide/src/main/resources/images/ovsdb-sb-active-connection.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/ovsdb-sb-config-crud.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/ovsdb-sb-oper-crud.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/ovsdb-sb-passive-connection.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/ovsdb/ODL_SFC_Architecture.png delete mode 100644 manuals/developer-guide/src/main/resources/images/pcmm-apidoc-explorer.png delete mode 100644 manuals/developer-guide/src/main/resources/images/pcmm-architecture.png delete mode 100644 manuals/developer-guide/src/main/resources/images/pcmm-depends-map.png delete mode 100644 manuals/developer-guide/src/main/resources/images/pcmm-dlux-flows.png delete mode 100644 manuals/developer-guide/src/main/resources/images/pcmm-dlux-login.png delete mode 100644 manuals/developer-guide/src/main/resources/images/pcmm-dlux-nodes.png delete mode 100644 manuals/developer-guide/src/main/resources/images/pcmm-postman.png delete mode 100644 manuals/developer-guide/src/main/resources/images/pcmm-wireshark.png delete mode 100755 manuals/developer-guide/src/main/resources/images/plugin-dev-process.png delete mode 100644 manuals/developer-guide/src/main/resources/images/sal_architecture.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/sfc-sf-selection-arch.png delete mode 100644 manuals/developer-guide/src/main/resources/images/sfc/sb-rest-architecture.png delete mode 100644 manuals/developer-guide/src/main/resources/images/sfc/sfc-ovs-architecture.png delete mode 100644 manuals/developer-guide/src/main/resources/images/sign-up.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/signup_image.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/smallnew.png delete mode 100644 manuals/developer-guide/src/main/resources/images/snbi/docker_snbi.png delete mode 100644 manuals/developer-guide/src/main/resources/images/snbi/first_fe_bs.png delete mode 100644 manuals/developer-guide/src/main/resources/images/snbi/snbi_arch.png delete mode 100644 manuals/developer-guide/src/main/resources/images/snmp4sdn_in_odl_architecture.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/snmp4sdn_modules.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/southbound_sample.jpg delete mode 100644 manuals/developer-guide/src/main/resources/images/tiger.png delete mode 100644 manuals/developer-guide/src/main/resources/images/topoprocessing/Inventory_Rendering_Use_case.png delete mode 100644 manuals/developer-guide/src/main/resources/images/topoprocessing/Inventory_model_listener_diagram.png delete mode 100644 manuals/developer-guide/src/main/resources/images/topoprocessing/LinkComputation.png delete mode 100644 manuals/developer-guide/src/main/resources/images/topoprocessing/LinkComputationFlowDiagram.png delete mode 100644 manuals/developer-guide/src/main/resources/images/topoprocessing/ModelAdapter.png delete mode 100644 manuals/developer-guide/src/main/resources/images/topoprocessing/Network_topology_model_flow_diagram.png delete mode 100644 manuals/developer-guide/src/main/resources/images/topoprocessing/TopologyRequestHandler_classesRelationship.png delete mode 100644 manuals/developer-guide/src/main/resources/images/topoprocessing/architecture.png delete mode 100644 manuals/developer-guide/src/main/resources/images/topoprocessing/wrapper.png delete mode 100644 manuals/developer-guide/src/main/resources/images/ttp-screen1-basic-auth.png delete mode 100644 manuals/developer-guide/src/main/resources/images/ttp-screen2-applied-basic-auth.png delete mode 100644 manuals/developer-guide/src/main/resources/images/ttp-screen3-sent-put.png delete mode 100644 manuals/developer-guide/src/main/resources/images/ttp-screen4-get-json.png delete mode 100644 manuals/developer-guide/src/main/resources/images/ttp-screen5-get-xml.png delete mode 100644 manuals/developer-guide/src/main/resources/images/vlanmap-using-mininet.png delete mode 100644 manuals/developer-guide/src/main/resources/images/vtn-stations.png delete mode 100644 manuals/developer-guide/src/main/resources/images/vtn/OpenStackDeveloperGuide.png delete mode 100644 manuals/developer-guide/src/main/resources/images/vtn/vtn-coordinator-api-architecture.png delete mode 100644 manuals/developer-guide/src/main/resources/images/vtn/vtn-coordinator-architecture.png delete mode 100644 manuals/developer-guide/src/main/resources/images/vtn/vtn-coordinator-odc-driver-architecture.png delete mode 100644 manuals/developer-guide/src/main/resources/images/vtn/vtn-coordinator-uppl-architecture.png delete mode 100644 manuals/developer-guide/src/main/resources/images/vtn/vtn-manager-architecture.png delete mode 100644 manuals/developer-guide/src/main/resources/images/vtn/vtn-overview.png delete mode 100644 manuals/developer-guide/src/main/resources/images/vtn/vtn-tc-architecture.png delete mode 100644 manuals/developer-guide/src/main/resources/images/vtn/vtn-upll-architecture.png delete mode 100644 manuals/pom.xml delete mode 100644 manuals/readme/pom.xml delete mode 100644 manuals/readme/src/main/asciidoc/readme-docinfo.xml delete mode 100644 manuals/readme/src/main/asciidoc/readme.adoc delete mode 100644 manuals/readme/src/main/asciidoc/template_developer_guide.adoc delete mode 100644 manuals/readme/src/main/asciidoc/template_installation_guide.adoc delete mode 100644 manuals/readme/src/main/asciidoc/template_release_notes.adoc delete mode 100644 manuals/readme/src/main/asciidoc/template_tutorial.adoc delete mode 100644 manuals/readme/src/main/asciidoc/template_user_guide.adoc delete mode 100644 manuals/user-guide/pom.xml delete mode 100644 manuals/user-guide/src/main/asciidoc/aaa/aaa.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/alto/alto-user-guide.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/alto/example-input.json delete mode 100644 manuals/user-guide/src/main/asciidoc/alto/example-rfc7285-networkmap.json delete mode 100644 manuals/user-guide/src/main/asciidoc/atrium/odl-atrium-all-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/bgpcep/odl-bgpcep-bgp-all-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/bgpcep/odl-bgpcep-bmp-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/bgpcep/odl-bgpcep-pcep-all-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/bk-user-guide-docinfo.xml delete mode 100644 manuals/user-guide/src/main/asciidoc/bk-user-guide.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/bk-user-guide.adoc.orig delete mode 100644 manuals/user-guide/src/main/asciidoc/capwap/capwap-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/cardinal/odl-cardinal-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/centinel/centinel-user-guide.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/controller/netconf/odl-netconf-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/didm/didm-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/faas/odl-faas-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/genius/genius-user-guide.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/groupbasedpolicy/odl-groupbasedpolicy-user-guide.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/l2switch/l2switch-user.adoc delete mode 100755 manuals/user-guide/src/main/asciidoc/lacp/lacp-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/lfm/lispflowmapping-msmr-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/natapp/odl-natapp-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/netide/odl-netide-user-guide.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/neutron/odl-neutron-service-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/nic/nic-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/ocpplugin/ocp-user-guide.adoc delete mode 100755 manuals/user-guide/src/main/asciidoc/of-config/ofconfig-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/openflowplugin/odl-ofp-user-guide.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/opflex/agent-ovs-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/ovsdb/odl-ovsdb-netvirt-user-guide.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/packetcable/packetcable-user.adoc delete mode 100755 manuals/user-guide/src/main/asciidoc/sdninterfaceapp/odl-sdninterfaceapp-all-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/sfc/sfc.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/snbi/odl-snbi-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/snmp/snmp-user-guide.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/snmp4sdn/snmp4sdn-user-guide.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/sxp/odl-sxp-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/tsdr/tsdr-user-guide.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/ttp/ttp-cli-tools-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/unimgr/unimgr-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/usc/odl-usc-channel-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/usecplugin/odl-usecplugin-aaa-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/usecplugin/odl-usecplugin-openflow-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/vpnservice/vpnservice-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/vtn/vtn-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/yang-push/odl-yang-push-user.adoc delete mode 100644 manuals/user-guide/src/main/asciidoc/yangide/yangide-user.adoc delete mode 100644 manuals/user-guide/src/main/resources/images/ODL-Helium-dependency.png delete mode 100644 manuals/user-guide/src/main/resources/images/ODL_lfm_Be_component.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/Odp_diagram_helium_v6.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/Screenshot1.png delete mode 100644 manuals/user-guide/src/main/resources/images/Screenshot2.png delete mode 100644 manuals/user-guide/src/main/resources/images/Screenshot3.png delete mode 100644 manuals/user-guide/src/main/resources/images/Screenshot4.png delete mode 100644 manuals/user-guide/src/main/resources/images/Screenshot5.png delete mode 100644 manuals/user-guide/src/main/resources/images/Screenshot6.png delete mode 100755 manuals/user-guide/src/main/resources/images/dlux-login.png delete mode 100755 manuals/user-guide/src/main/resources/images/dlux-topology.png delete mode 100755 manuals/user-guide/src/main/resources/images/dlux-yang-api-specification.png delete mode 100755 manuals/user-guide/src/main/resources/images/dlux-yang-list-button1.png delete mode 100755 manuals/user-guide/src/main/resources/images/dlux-yang-list-elements.png delete mode 100755 manuals/user-guide/src/main/resources/images/dlux-yang-list-warning.png delete mode 100755 manuals/user-guide/src/main/resources/images/dlux-yang-sub-api-screen.png delete mode 100755 manuals/user-guide/src/main/resources/images/dlux-yang-topology.png delete mode 100755 manuals/user-guide/src/main/resources/images/dlux-yang-ui-screen.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/GBPTerminology1.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/GBPTerminology2.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/GBPTerminology3.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/GBP_AccessModel_simple.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/GBP_Endpoint_EPG_Contract.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/GBP_Endpoint_EPG_Forwarding.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/GBP_ForwardingModel_simple.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/GBP_High-levelBerylliumArchitecture.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/GBP_High-levelExtraRenderer.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/High-levelBerylliumArchitectureEvolution2.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/IntentSystemPolicySurfaces.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/gbp-neutron-mapper.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/group-based-policy-architecture.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/neutron-gbp-mappings.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/neutronmapper-gbp-mapping-dhcp.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/neutronmapper-gbp-mapping-network-example.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/neutronmapper-gbp-mapping-network.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/neutronmapper-gbp-mapping-port-example.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/neutronmapper-gbp-mapping-port.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/neutronmapper-gbp-mapping-router.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/neutronmapper-gbp-mapping-securitygroup.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/neutronmapper-gbp-mapping-subnet-example.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/neutronmapper-gbp-mapping-subnet.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/ofoverlay-1-components.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/ofoverlay-2-components.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/ofoverlay-3-flowpipeline.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/sfc-1-topology.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/sfc-2-symmetric.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/sfc-3-asymmetric.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/ui-1-basicview.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/ui-2-governanceview.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/ui-3-governanceview-expressed.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/ui-4-governanceview-delivered-0.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/ui-4-governanceview-delivered-1-subject.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/ui-4-governanceview-delivered-2-epg.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/ui-4-governanceview-renderer.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/ui-5-expresssion-1.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/ui-5-expresssion-2.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/ui-5-expresssion-3.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/ui-5-expresssion-4.png delete mode 100644 manuals/user-guide/src/main/resources/images/groupbasedpolicy/ui-6-wizard.png delete mode 100644 manuals/user-guide/src/main/resources/images/l2switch-address-observations.png delete mode 100644 manuals/user-guide/src/main/resources/images/l2switch-hosts.png delete mode 100644 manuals/user-guide/src/main/resources/images/l2switch-stp-status.png delete mode 100644 manuals/user-guide/src/main/resources/images/netide/netide-flow.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/netide/netidearch.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/neutron/odl-neutron-service-architecture.png delete mode 100644 manuals/user-guide/src/main/resources/images/nic/Redirect_flow.png delete mode 100644 manuals/user-guide/src/main/resources/images/nic/Service_Chaining.png delete mode 100644 manuals/user-guide/src/main/resources/images/ocpplugin/dlux-ocp-apis.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/ocpplugin/dlux-ocp-nodes.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/ocpplugin/message_flow.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/ocpplugin/ocp-sb-plugin.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/ocpplugin/plugin-config.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/ocpplugin/plugin-design.jpg delete mode 100755 manuals/user-guide/src/main/resources/images/odl-architecture.png delete mode 100644 manuals/user-guide/src/main/resources/images/openflowplugin/host-only-vbox.png delete mode 100644 manuals/user-guide/src/main/resources/images/openflowplugin/plugin_design.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/ovsdb/ovsdb-netvirt-architecture.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/pcmm-docsis.png delete mode 100644 manuals/user-guide/src/main/resources/images/pcmm-technical-arch-overview-helium.png delete mode 100644 manuals/user-guide/src/main/resources/images/plugin_design.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/sfc/RESTClient-snapshot.png delete mode 100644 manuals/user-guide/src/main/resources/images/sfc/karaf-webui-select-a-type.png delete mode 100644 manuals/user-guide/src/main/resources/images/sfc/sb-rest-architecture-user.png delete mode 100644 manuals/user-guide/src/main/resources/images/sfc/sf-rendered-service-path.png delete mode 100644 manuals/user-guide/src/main/resources/images/sfc/sf-schedule-type.png delete mode 100644 manuals/user-guide/src/main/resources/images/sfc/sf-selection-arch.png delete mode 100644 manuals/user-guide/src/main/resources/images/sfc/sf-selectionalgorithm-observations.png delete mode 100644 manuals/user-guide/src/main/resources/images/sfc/sfc-ovs-architecture-user.png delete mode 100644 manuals/user-guide/src/main/resources/images/sfc/sfc-ui-architecture.png delete mode 100644 manuals/user-guide/src/main/resources/images/sfc/sfcofrenderer_architecture.png delete mode 100644 manuals/user-guide/src/main/resources/images/sfc/sfcofrenderer_nwtopo.png delete mode 100644 manuals/user-guide/src/main/resources/images/snbi/snbi_arch.png delete mode 100644 manuals/user-guide/src/main/resources/images/snmp4sdn_getvlantable_postman.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/snmp4sdn_in_odl_architecture.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Creare_Network_Step_1.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Create_Network.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Create_Network_Step_2.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Create_Network_Step_3.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Dlux_login.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Dlux_topology.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/How_to_provision_virtual_L2_network.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Hypervisors.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Instance_Console.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Instance_Creation.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Instance_ping.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Launch_Instance.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Launch_Instance_network.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Load_All_Instances.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Mininet_Configuration.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/MutiController_Example_diagram.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Network_Created_Step_4.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/OpenStackGui.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/OpenStack_Demo_Picture.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Pathmap.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Service_Chaining_With_One_Service.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Service_Chaining_With_One_Service_LLD.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Service_Chaining_With_One_Service_Verification.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Service_Chaining_With_Two_Services.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Service_Chaining_With_Two_Services_LLD.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Single_Controller_Mapping.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/Tenant2.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/VTN_API.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/VTN_Construction.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/VTN_Flow_Filter.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/VTN_Mapping.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/VTN_Overview.jpg delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/flow_filter_example.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/setup_diagram_SCVMM.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/vlanmap_using_mininet.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/vtn-single-controller-topology-example.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/vtn_devstack_setup.png delete mode 100644 manuals/user-guide/src/main/resources/images/vtn/vtn_stations.png delete mode 100644 pom.xml diff --git a/docs_autotranslation/Makefile b/docs_autotranslation/Makefile deleted file mode 100644 index 30feeced9..000000000 --- a/docs_autotranslation/Makefile +++ /dev/null @@ -1,224 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = _build - -# User-friendly check for sphinx-build -ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) - $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don\'t have Sphinx installed, grab it from http://sphinx-doc.org/) -endif - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . - -.PHONY: help -help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " applehelp to make an Apple Help Book" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " epub3 to make an epub3" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " xml to make Docutils-native XML files" - @echo " pseudoxml to make pseudoxml-XML files for display purposes" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - @echo " coverage to run coverage check of the documentation (if enabled)" - -.PHONY: clean -clean: - rm -rf $(BUILDDIR)/* - -.PHONY: html -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -.PHONY: dirhtml -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -.PHONY: singlehtml -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -.PHONY: pickle -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -.PHONY: json -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -.PHONY: htmlhelp -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -.PHONY: qthelp -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/OpenDaylightDocumentation.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/OpenDaylightDocumentation.qhc" - -.PHONY: applehelp -applehelp: - $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp - @echo - @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." - @echo "N.B. You won't be able to view it unless you put it in" \ - "~/Library/Documentation/Help or install it in your application" \ - "bundle." - -.PHONY: devhelp -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/OpenDaylightDocumentation" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/OpenDaylightDocumentation" - @echo "# devhelp" - -.PHONY: epub -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -.PHONY: epub3 -epub3: - $(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3 - @echo - @echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3." - -.PHONY: latex -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -.PHONY: latexpdf -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -.PHONY: latexpdfja -latexpdfja: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through platex and dvipdfmx..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -.PHONY: text -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -.PHONY: man -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -.PHONY: texinfo -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -.PHONY: info -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -.PHONY: gettext -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -.PHONY: changes -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -.PHONY: linkcheck -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -.PHONY: doctest -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." - -.PHONY: coverage -coverage: - $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage - @echo "Testing of coverage in the sources finished, look at the " \ - "results in $(BUILDDIR)/coverage/python.txt." - -.PHONY: xml -xml: - $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml - @echo - @echo "Build finished. The XML files are in $(BUILDDIR)/xml." - -.PHONY: pseudoxml -pseudoxml: - $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml - @echo - @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." - diff --git a/docs_autotranslation/README b/docs_autotranslation/README deleted file mode 100644 index 316b1d3bd..000000000 --- a/docs_autotranslation/README +++ /dev/null @@ -1,3 +0,0 @@ -This folder is designed to receive compiled reST from the makeRST.sh -script. It is a skeleton to receive the compiled reST and make it -useful. It is not useful on its own. diff --git a/docs_autotranslation/conf.py b/docs_autotranslation/conf.py deleted file mode 100644 index fda8e42c8..000000000 --- a/docs_autotranslation/conf.py +++ /dev/null @@ -1,320 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# OpenDaylight Documentation documentation build configuration file, created by -# sphinx-quickstart on Mon Mar 28 14:20:08 2016. -# -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys -import os -import sphinx_bootstrap_theme - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) - -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [] - -javasphinx_available = False -try: - import javasphinx - javasphinx_available = True - extensions.append('javasphinx') -except ImportError, e: - pass - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = 'OpenDaylight Documentation' -copyright = '2016, OpenDaylight Project' -author = 'OpenDaylight Project' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = 'Boron' -# The full version, including alpha/beta/rc tags. -release = 'Boron' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This patterns also effect to html_static_path and html_extra_path -exclude_patterns = [] - -# The reST default role (used for this markup: `text`) to use for all -# documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - -# If true, keep warnings as "system message" paragraphs in the built documents. -#keep_warnings = False - -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = False - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'bootstrap' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} -html_theme_options = { - 'bootswatch_theme': "united", -} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] -html_theme_path = sphinx_bootstrap_theme.get_html_theme_path() - -# The name for this set of Sphinx documents. -# " v documentation" by default. -#html_title = 'OpenDaylight Documentation v0.3.0' - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -html_logo = '_static/odl_small.png' - -# The name of an image file (relative to this directory) to use as a favicon of -# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# Add any extra paths that contain custom files (such as robots.txt or -# .htaccess) here, relative to this directory. These files are copied -# directly to the root of the documentation. -#html_extra_path = [] - -# If not None, a 'Last updated on:' timestamp is inserted at every page -# bottom, using the given strftime format. -# The empty string is equivalent to '%b %d, %Y'. -#html_last_updated_fmt = None - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Language to be used for generating the HTML full-text search index. -# Sphinx supports the following languages: -# 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja' -# 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr', 'zh' -#html_search_language = 'en' - -# A dictionary with options for the search language support, empty by default. -# 'ja' uses this config value. -# 'zh' user can custom change `jieba` dictionary path. -#html_search_options = {'type': 'default'} - -# The name of a javascript file (relative to the configuration directory) that -# implements a search results scorer. If empty, the default will be used. -#html_search_scorer = 'scorer.js' - -# Output file base name for HTML help builder. -htmlhelp_basename = 'OpenDaylightDocumentationdoc' - -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', - -# Latex figure (float) alignment -#'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, 'OpenDaylightDocumentation.tex', 'OpenDaylight Documentation Documentation', - 'OpenDaylight Project', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'opendaylightdocumentation', 'OpenDaylight Documentation Documentation', - [author], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, 'OpenDaylightDocumentation', 'OpenDaylight Documentation Documentation', - author, 'OpenDaylightDocumentation', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' - -# If true, do not generate a @detailmenu in the "Top" node's menu. -#texinfo_no_detailmenu = False - - -linkcheck_ignore = [ - # Ignore jenkins because it's often slow to respond. - 'https://jenkins.opendaylight.org/releng', - 'https://jenkins.opendaylight.org/sandbox', - 'http://\$CONTROL_HOST:8181/dlux/index.html', - # The '#' in the path makes sphinx think it's an anchor - 'https://git.opendaylight.org/gerrit/#/admin/projects/releng/builder', -] - -# Build integration stuff -#import subprocess - -#subprocess.call(["./build-integration-robot-libdoc.sh"]) - -# Disable javasphinx generation until we have a solution to long build -# times. readthedocs timesout after 902 seconds. -# if javasphinx_available: -# subprocess.call(["./generate-javaapidoc.sh"]) diff --git a/docs_autotranslation/index.rst b/docs_autotranslation/index.rst deleted file mode 100644 index 1822bb829..000000000 --- a/docs_autotranslation/index.rst +++ /dev/null @@ -1,54 +0,0 @@ -.. OpenDaylight Documentation documentation master file, created by - sphinx-quickstart on Mon Mar 28 14:20:08 2016. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Welcome to the OpenDaylight Handbook! -===================================== - -This handbook provides details on various aspects of OpenDaylight from the user -guides to the developer guides and tries to act as a single point of contact -for all documentation related articles in OpenDaylight. If you would like to -contribute to the Handbook please refer to the :ref:`documentation-guide`. - -Content for OpenDaylight Users ------------------------------- - -The following content is intended for people who would like to deploy, use, or -just learn more about OpenDaylight. - -.. toctree:: - :maxdepth: 1 - - getting-started-guide/index - opendaylight-with-openstack/index - user-guide-autogenerated/index - -.. Uncomment this when we have reST content targeting developers -.. Content for OpenDaylight Developers -.. ----------------------------------- -.. -.. The Following content is intended for developers building applications or code -.. on top of OpenDaylight, but who do not plan to modify OpenDaylight code -.. itself. - - -Content for OpenDaylight Contributors -------------------------------------- - -The following content is intended for developers who either currently -participate in the development of OpenDaylight or would like to start. - -.. toctree:: - :maxdepth: 1 - - developer-guide-autogenerated/index - - -.. Commenting the below out until we actually use it -.. Indices and tables -.. ================== -.. -.. * :ref:`genindex` -.. * :ref:`modindex` -.. * :ref:`search` diff --git a/docs_autotranslation/make.bat b/docs_autotranslation/make.bat deleted file mode 100644 index 380a8848d..000000000 --- a/docs_autotranslation/make.bat +++ /dev/null @@ -1,272 +0,0 @@ -@ECHO OFF - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set BUILDDIR=_build -set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . -set I18NSPHINXOPTS=%SPHINXOPTS% . -if NOT "%PAPER%" == "" ( - set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% - set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% -) - -if "%1" == "" goto help - -if "%1" == "help" ( - :help - echo.Please use `make ^` where ^ is one of - echo. html to make standalone HTML files - echo. dirhtml to make HTML files named index.html in directories - echo. singlehtml to make a single large HTML file - echo. pickle to make pickle files - echo. json to make JSON files - echo. htmlhelp to make HTML files and a HTML help project - echo. qthelp to make HTML files and a qthelp project - echo. devhelp to make HTML files and a Devhelp project - echo. epub to make an epub - echo. epub3 to make an epub3 - echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter - echo. text to make text files - echo. man to make manual pages - echo. texinfo to make Texinfo files - echo. gettext to make PO message catalogs - echo. changes to make an overview over all changed/added/deprecated items - echo. xml to make Docutils-native XML files - echo. pseudoxml to make pseudoxml-XML files for display purposes - echo. linkcheck to check all external links for integrity - echo. doctest to run all doctests embedded in the documentation if enabled - echo. coverage to run coverage check of the documentation if enabled - goto end -) - -if "%1" == "clean" ( - for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i - del /q /s %BUILDDIR%\* - goto end -) - - -REM Check if sphinx-build is available and fallback to Python version if any -%SPHINXBUILD% 1>NUL 2>NUL -if errorlevel 9009 goto sphinx_python -goto sphinx_ok - -:sphinx_python - -set SPHINXBUILD=python -m sphinx.__init__ -%SPHINXBUILD% 2> nul -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ - exit /b 1 -) - -:sphinx_ok - - -if "%1" == "html" ( - %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/html. - goto end -) - -if "%1" == "dirhtml" ( - %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. - goto end -) - -if "%1" == "singlehtml" ( - %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. - goto end -) - -if "%1" == "pickle" ( - %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the pickle files. - goto end -) - -if "%1" == "json" ( - %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the JSON files. - goto end -) - -if "%1" == "htmlhelp" ( - %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run HTML Help Workshop with the ^ -.hhp project file in %BUILDDIR%/htmlhelp. - goto end -) - -if "%1" == "qthelp" ( - %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run "qcollectiongenerator" with the ^ -.qhcp project file in %BUILDDIR%/qthelp, like this: - echo.^> qcollectiongenerator %BUILDDIR%\qthelp\OpenDaylightDocumentation.qhcp - echo.To view the help file: - echo.^> assistant -collectionFile %BUILDDIR%\qthelp\OpenDaylightDocumentation.ghc - goto end -) - -if "%1" == "devhelp" ( - %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. - goto end -) - -if "%1" == "epub" ( - %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The epub file is in %BUILDDIR%/epub. - goto end -) - -if "%1" == "epub3" ( - %SPHINXBUILD% -b epub3 %ALLSPHINXOPTS% %BUILDDIR%/epub3 - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The epub3 file is in %BUILDDIR%/epub3. - goto end -) - -if "%1" == "latex" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "latexpdf" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - cd %BUILDDIR%/latex - make all-pdf - cd %~dp0 - echo. - echo.Build finished; the PDF files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "latexpdfja" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - cd %BUILDDIR%/latex - make all-pdf-ja - cd %~dp0 - echo. - echo.Build finished; the PDF files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "text" ( - %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The text files are in %BUILDDIR%/text. - goto end -) - -if "%1" == "man" ( - %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The manual pages are in %BUILDDIR%/man. - goto end -) - -if "%1" == "texinfo" ( - %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. - goto end -) - -if "%1" == "gettext" ( - %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The message catalogs are in %BUILDDIR%/locale. - goto end -) - -if "%1" == "changes" ( - %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes - if errorlevel 1 exit /b 1 - echo. - echo.The overview file is in %BUILDDIR%/changes. - goto end -) - -if "%1" == "linkcheck" ( - %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck - if errorlevel 1 exit /b 1 - echo. - echo.Link check complete; look for any errors in the above output ^ -or in %BUILDDIR%/linkcheck/output.txt. - goto end -) - -if "%1" == "doctest" ( - %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest - if errorlevel 1 exit /b 1 - echo. - echo.Testing of doctests in the sources finished, look at the ^ -results in %BUILDDIR%/doctest/output.txt. - goto end -) - -if "%1" == "coverage" ( - %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage - if errorlevel 1 exit /b 1 - echo. - echo.Testing of coverage in the sources finished, look at the ^ -results in %BUILDDIR%/coverage/python.txt. - goto end -) - -if "%1" == "xml" ( - %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The XML files are in %BUILDDIR%/xml. - goto end -) - -if "%1" == "pseudoxml" ( - %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. - goto end -) - -:end diff --git a/docs_autotranslation/split.py b/docs_autotranslation/split.py deleted file mode 100755 index 714da3296..000000000 --- a/docs_autotranslation/split.py +++ /dev/null @@ -1,159 +0,0 @@ -#!/usr/bin/env python -from __future__ import print_function -import os -import shutil -import argparse - -chapterNames = [] - - -def isEquqalsSign(str): - # Check if this line only contains '=' - if str.strip() == '': - return False - for ch in str: - if ch != '=': - return False - return True - - -def isGuideHeader(title, equalsSign): - if not isEquqalsSign(equalsSign.rstrip()): - return False - if len(title.rstrip()) == len(equalsSign.rstrip()): - return True - else: - return False - - -def getLines(lines, start, end): - # Get the text of one chapter - out = '' - while(start < end): - out += lines[start] - start += 1 - return out - - -def getGuides(lines, lineNumbers): - output = [] - for i in range(0, len(lineNumbers)): - if i != len(lineNumbers) - 1: - start = lineNumbers[i] - 1 - end = lineNumbers[i + 1] - 1 - output.append(getLines(lines, start, end)) - else: - start = lineNumbers[i] - 1 - end = len(lines) - output.append(getLines(lines, start, end)) - return output - - -def printToFile(textList): - chapterIndex = 0 - - for text in textList: - try: - file = open(outputPath + '/' + - chapterNames[chapterIndex] + '.rst', 'w') - except: - file = open(outputPath + '/' + - chapterNames[chapterIndex] + '.rst', 'w') - file.write(text) - file.close() - chapterIndex += 1 - return - - -def copyDirectory(src, dest): - try: - shutil.copytree(src, dest) - # Directories are the same - except shutil.Error as e: - print('Directory not copied. Error: %s' % e) - # Any error saying that the directory doesn't exist - except OSError as e: - print('Directory not copied. Error: %s' % e) - - -class FileWrapper(object): - def __init__(self, f): - self.f = f - self.line = 0 - - def close(self): - return self.f.close - - def readline(self): - self.line += 1 - return self.f.readline() - - def readlines(self): - return self.f.readlines() - -# Obtain command line arguments -parser = argparse.ArgumentParser( - description='Obtain input/output and image directories') -parser.add_argument('-i', '--input', help='Input reST file. ' + - 'Default="developer-guide/index.rst"', - default='developer-guide/index.rst') -parser.add_argument('-r', '--resource', help='Image resource directory', - default='argparse.SUPPRESS') -parser.add_argument('-o', '--output', help='Output directory', - default='argparse.SUPPRESS') -args = parser.parse_args() -inputFile = args.input -inputPath = os.path.dirname(inputFile) -if not hasattr(parser, 'resource'): - imagePath = inputPath + '/images' -else: - imagePath = parser.resource -if not hasattr(parser, 'output'): - outputPath = inputPath + '-autogenerated' -else: - outputPath = parser.output - -# Create outputPath if necessary -if not os.path.exists(outputPath): - os.makedirs(outputPath) - -deGuide = FileWrapper(open(inputFile)) - -lineAbove = deGuide.readline() -line = deGuide.readline() - -lineNumbers = [] - -while (line != ''): - if isGuideHeader(lineAbove, line): - lineNumbers.append(deGuide.line - 1) - chapterNames.append(lineAbove.lower().replace(' ', '-'). - replace(':', '_').rstrip()) # replace ':' in case sphinx builder can't process. - lineAbove = line - line = deGuide.readline() -deGuide.close() -deGuide = FileWrapper(open(inputFile)) -lines = deGuide.readlines() -deGuide.close() -textList = getGuides(lines, lineNumbers) -printToFile(textList) - -# Copy image path to developer-guide-autogenerated derectory -copyDirectory(imagePath, outputPath + '/images') - -# Initialize the index.rst file -# 1.rename opendaylight-developer-guide.rst(title + author) to index.rst -# 2.write toctree info to index.rst -indexPath = outputPath + '/' + 'index.rst' -try: - os.rename(outputPath + '/' + chapterNames[0] + '.rst', indexPath) -except OSError: - print(chapterNames[0] + '.rst ' + 'does not exists.') - -rstIndexText = open(indexPath, 'a') -rstIndexText.write('.. toctree:: \n') -rstIndexText.write('\t' + ':maxdepth: 1 \n') -rstIndexText.write('\n') -for i in range(1, len(chapterNames)): - rstIndexText.write('\t' + chapterNames[i] + '\n') -rstIndexText.close() diff --git a/makeRST.sh b/makeRST.sh deleted file mode 100755 index bd716ee13..000000000 --- a/makeRST.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -# This script compiles documenatation from asciidoc source by -# converting asciidoc to reStructedText automatically using -# asciidoctor maven plug in and pandoc (http://www.pandoc.org/). -# -# Please make sure you have pandoc (http://www.pandoc.org/), sphinx -# (http://www.sphinx-doc.org/) and sphinx-bootstrap-theme(https://ryan-roemer.github.io/sphinx-bootstrap-theme/) installed. - -cwd=$(pwd) -cp -r $cwd/docs/getting-started-guide $cwd/docs_autotranslation/getting-started-guide -cp -r $cwd/docs/opendaylight-with-openstack $cwd/docs_autotranslation/opendaylight-with-openstack -cp -r $cwd/docs/_static $cwd/docs_autotranslation/_static -docs='developer-guide user-guide' -for i in $docs -do - echo "Translating $i ..." - cd $cwd/manuals/$i - mvn clean compile - cp -r $cwd/manuals/$i/target/generated-docs $cwd/docs_autotranslation/$i - mvn clean - cd $cwd/docs_autotranslation/$i - pandoc -f docbook -t rst -s *.xml -o index.rst -done - -cd $cwd/docs_autotranslation -./split.py -i developer-guide/index.rst -./split.py -i user-guide/index.rst - -sphinx-build -b html $cwd/docs_autotranslation $cwd/docs_autotranslation/html - - diff --git a/manuals/.gitignore b/manuals/.gitignore deleted file mode 100644 index e43b0f988..000000000 --- a/manuals/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.DS_Store diff --git a/manuals/common/app_support.xml b/manuals/common/app_support.xml deleted file mode 100644 index 756492318..000000000 --- a/manuals/common/app_support.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - Community support - Many resources are available to help you run and use OpenDaylight. Members of the - OpenDaylight community can answer questions and help with bug suspicions. We are constantly - improving and adding to the main features of OpenDaylight, but if you have any problems, do - not hesitate to ask. Use the following resources to get OpenDaylight support and - troubleshoot your existing installations. -
- Documentation - For the available OpenDaylight documentation, see docs.opendaylight.org. - The following books explain how to install and operate OpenDaylight SDN Controller: - - - - Installation Guide - - - - - End - User Guide - - - - - Command Line Interface Reference - - - - The following documentation provides reference and guidance information for the - OpenStack APIs: - - - OpenDaylight API - Reference - - -
-
- OpenDaylight mailing lists - A great way to get answers and insights is to post your question or problematic - scenario to the OpenStack mailing list. You can learn from and help others who might - have similar issues. To subscribe or view the archives, go to https://lists.opendaylight.org/mailman/listinfo. You might be interested in - the other mailing lists for specific projects or development, which you can find on the wiki. - -
-
- The OpenDaylight wiki - The OpenDaylight - wiki contains a broad range of topics but some of the information can be - difficult to find or is a few pages deep. Fortunately, the wiki search feature enables - you to search by title or content. If you search for specific information, such as about - networking or nova, you can find lots of relevant material. More is being added all the - time, so be sure to check back often. You can find the search box in the upper right - corner of any OpenDaylight wiki page. -
-
- Bugzilla Bugs - The OpenDaylight community values your set up and testing efforts and wants your - feedback. To log a bug, you must sign up for an OpenDaylight account at https://launchpad.net/+login. You - can view existing bugs and report bugs in the Bugzilla bug tracker at . Use the search feature to determine - whether the bug has already been reported or even better, already fixed. If it still - seems like your bug is unreported, fill out a bug report. - Some tips: - - - Give a clear, concise summary! - - - Provide as much detail as possible in the description. Paste in your command - output or stack traces, links to screen shots, and so on. - - - Be sure to include the software and package versions that you are using, - especially if you are using a development branch, such as, "Hydrogen - release" vs git commit - bc79c3ecc55929bac585d04a03475b72e06a3208. - - - Any deployment specific information is helpful, such as Ubuntu 12.04 or - multi-node install. - - -
-
- The OpenDaylight IRC channel - The OpenDaylight community is usually available in the #opendaylight IRC channel on - the Freenode network. You can hang out, ask questions, or get immediate feedback for - urgent and pressing issues. To install an IRC client or use a browser-based client, go - to http://webchat.freenode.net/. - You can also use Colloquy (Mac OS X, http://colloquy.info/), mIRC (Windows, http://www.mirc.com/), or XChat (Linux). - When you are in the IRC channel and want to share code or command output, the generally - accepted method is to use a Paste Bin. -
-
diff --git a/manuals/developer-guide/pom.xml b/manuals/developer-guide/pom.xml deleted file mode 100644 index 50e28f91d..000000000 --- a/manuals/developer-guide/pom.xml +++ /dev/null @@ -1,149 +0,0 @@ - - - org.opendaylight.docs - manuals - 0.4.0-SNAPSHOT - ../pom.xml - - 4.0.0 - developersguide - jar - OpenDaylight Docs - Manuals - Developer's Guide - - - local - 1 - bk-developers-guide - - - - - - - - org.asciidoctor - asciidoctor-maven-plugin - ${asciidoctor.version} - - - output-docbook - generate-sources - - process-asciidoc - - - docbook5 - book - - - - - src/main/asciidoc - ${bookname}.adoc - ./images - - - - maven-resources-plugin - 2.6 - - - copy-resources - generate-resources - - copy-resources - - - ${basedir}/target/generated-docs - - - src/main/resources - - **/*.* - - - - - - - - - com.inocybe.api - sdndocs-maven-plugin - 0.1.0 - - - generate-webhelp - - generate-webhelp - - compile - - enduser - target/generated-docs/${bookname}.xml - - - appendix toc,title - article/appendix nop - article toc,title - book toc,title,figure,table,example,equation - chapter toc,title - section toc - part toc,title - qandadiv toc - qandaset toc - reference toc,title - set toc,title - - ${bookname} - ${bookname} - - - - - enduser - 1 - 0 - 1 - 0 - false - true - true - . - mlemay@inocybe.com - opendaylight - 2.6in - 0 - http://docs.opendaylight.org/user-guide/content/ - ${basedir}/../glossary/glossary-terms.xml - - - - org.apache.maven.plugins - maven-site-plugin - 3.1 - - ${project.build.directory}/docbkx/webhelp - - - - org.apache.maven.wagon - wagon-webdav-jackrabbit - 2.2 - - - org.slf4j - slf4j-api - 1.6.1 - - - - - - diff --git a/manuals/developer-guide/src/main/asciidoc/alto/alto-developer-guide.adoc b/manuals/developer-guide/src/main/asciidoc/alto/alto-developer-guide.adoc deleted file mode 100644 index e03b5cc4f..000000000 --- a/manuals/developer-guide/src/main/asciidoc/alto/alto-developer-guide.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== ALTO Developer Guide == - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/alto-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/alto/augment.yang b/manuals/developer-guide/src/main/asciidoc/alto/augment.yang deleted file mode 100644 index 61f005b40..000000000 --- a/manuals/developer-guide/src/main/asciidoc/alto/augment.yang +++ /dev/null @@ -1,26 +0,0 @@ - grouping "alto-ird-request" { - container "ird-request" { - } - } - grouping "alto-ird-response" { - container "ird" { - container "meta" { - } - list "resource" { - key "resource-id"; - leaf "resource-id" { - type "alto-types:resource-id"; - } - } - } - } - augment "/base:query/base:input/base:request" { - case "ird-request-data" { - uses "alto-ird-request"; - } - } - augment "/base:query/base:output/base:response" { - case "ird-response-data" { - uses "alto-ird-response"; - } - } \ No newline at end of file diff --git a/manuals/developer-guide/src/main/asciidoc/atrium/odl-atrium-all-dev.adoc b/manuals/developer-guide/src/main/asciidoc/atrium/odl-atrium-all-dev.adoc deleted file mode 100644 index 82f8246a6..000000000 --- a/manuals/developer-guide/src/main/asciidoc/atrium/odl-atrium-all-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== Atrium Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/atrium-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/bgpcep/odl-bgpcep-bgp-all-dev.adoc b/manuals/developer-guide/src/main/asciidoc/bgpcep/odl-bgpcep-bgp-all-dev.adoc deleted file mode 100644 index 5eb312bdb..000000000 --- a/manuals/developer-guide/src/main/asciidoc/bgpcep/odl-bgpcep-bgp-all-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== BGP Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/bgp-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/bgpcep/odl-bgpcep-bmp-dev.adoc b/manuals/developer-guide/src/main/asciidoc/bgpcep/odl-bgpcep-bmp-dev.adoc deleted file mode 100644 index ef13fc70e..000000000 --- a/manuals/developer-guide/src/main/asciidoc/bgpcep/odl-bgpcep-bmp-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== BGP Monitoring Protocol Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/bgp-monitoring-protocol-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/bgpcep/odl-bgpcep-pcep-all-dev.adoc b/manuals/developer-guide/src/main/asciidoc/bgpcep/odl-bgpcep-pcep-all-dev.adoc deleted file mode 100644 index 6e84749d8..000000000 --- a/manuals/developer-guide/src/main/asciidoc/bgpcep/odl-bgpcep-pcep-all-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== PCEP Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/pcep-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/bk-developers-guide-docinfo.xml b/manuals/developer-guide/src/main/asciidoc/bk-developers-guide-docinfo.xml deleted file mode 100644 index 563136abb..000000000 --- a/manuals/developer-guide/src/main/asciidoc/bk-developers-guide-docinfo.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - OpenDaylight - Community - - documentation@opendaylight.org - - Linux Foundation - - - - 2016 - Linux Foundation - - Boron - OpenDaylight - - - This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at - - - This guide describes how to develop using OpenDaylight. - - - - 2014-08-03 - - - - Initial Guide Creation - - - - - - diff --git a/manuals/developer-guide/src/main/asciidoc/bk-developers-guide.adoc b/manuals/developer-guide/src/main/asciidoc/bk-developers-guide.adoc deleted file mode 100644 index a94bffa73..000000000 --- a/manuals/developer-guide/src/main/asciidoc/bk-developers-guide.adoc +++ /dev/null @@ -1,178 +0,0 @@ -[[bk-user-guide]] -= OpenDaylight Developer Guide -:docinfo: - -/////// -[dedication] -Example Dedication ------------------- -Optional dedication. - -This document is an AsciiDoc book skeleton containing briefly -annotated example elements plus a couple of example index entries and -footnotes. - -Books are normally used to generate DocBook markup and the titles of -the preface, appendix, bibliography, glossary and index sections are -significant ('specialsections'). - - -[preface] -Example Preface ---------------- -Optional preface. - -Preface Sub-section -~~~~~~~~~~~~~~~~~~~ -Preface sub-section body. -/////// - -////////////////////////// -Please note and leave the blank line between include statements here. - -It is a defensive measure to prevent individual projects' .adoc files -from eating the next section if they forget to leave a blank line at -the end of their file. -////////////////////////// - -A significant amount of this guide has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/index.html - -Please look there as well as here for any content. - -= Project-Specific Development Guides - -include::alto/alto-developer-guide.adoc[ALTO] - -include::atrium/odl-atrium-all-dev.adoc[Atrium] - -include::bgpcep/odl-bgpcep-bgp-all-dev.adoc[BGP] - -include::bgpcep/odl-bgpcep-bmp-dev.adoc[BGP] - -include::capwap/capwap-dev.adoc[CAPWAP] - -include::cardinal/odl-cardinal-dev.adoc[] - -include::controller/controller.adoc[Controller] - -include::didm/didm-dev.adoc[] - -include::dlux/dlux-core-dev.adoc[] - -include::iotdm/iotdm-dev.adoc[] - -include::l2switch/l2switch-dev.adoc[] - -include::lacp/lacp-dev.adoc[] - -include::controller/netconf/odl-netconf-dev.adoc[] - -include::nic/nic-dev.adoc[] - -include::netide/netide-developer-guide.adoc[] - -include::neutron/odl-neutron-service-dev.adoc[] - -include::neutron/neutron.adoc[] - -include::odlparent/odlparent-developer.adoc[] - -include::ocpplugin/ocp-developer-guide.adoc[OCP] - -include::sdninterfaceapp/odl-sdninterfaceapp-all-dev.adoc[] - -include::of-config/of-config-dev.adoc[] - -include::openflowjava/odl-openflowjava-protocol-dev.adoc[] - -include::openflowplugin/odl-ofp-developer-guide.adoc[] - -include::opflex/agent-ovs-dev.adoc[] - -include::opflex/genie-dev.adoc[] - -include::opflex/libopflex-dev.adoc[] - -include::natapp/odl-natapp-dev.adoc[NATAPP] - -include::ovsdb/ovsdb-developer.adoc[] - -include::bgpcep/odl-bgpcep-pcep-all-dev.adoc[PCEP] - -include::packetcable/packetcable-dev.adoc[Packet Cable PCMM Southbound Plugin] - -// commenting this out as it contains no content -//include::reservation/reservation-dev.adoc[] - -include::faas/odl-faas-dev.adoc[] - -include::sfc/sfc.adoc[] - -include::snbi/odl-snbi-dev.adoc[] - -include::snmp4sdn/snmp4sdn-developer.adoc[SNMP4SDN] - -include::sxp/odl-sxp-dev.adoc[] - -include::topoprocessing/odl-topoprocessing-framework-dev.adoc[] - -include::ttp/ttp-model-dev.adoc[] - -include::ttp/ttp-cli-tools-dev.adoc[] - -include::unimgr/odl-unimgr-channel-dev.adoc[] - -include::usecplugin/odl-usecplugin-aaa-dev.adoc[USECPLUGIN-AAA] - -include::usecplugin/odl-usecplugin-openflow-dev.adoc[USECPLUGIN-OPENFLOW] - -include::usc/odl-usc-channel-dev.adoc[] - -include::vtn/vtn-dev.adoc[] - -include::yangtools/yangtools.adoc[] - -include::yang-push/odl-yang-push-dev.adoc[YANG-PUSH] - -:numbered!: - -/////// -[appendix] -Example Appendix ----------------- -One or more optional appendixes go here at section level 1. - -Appendix Sub-section -~~~~~~~~~~~~~~~~~~~ -Sub-section body. - - -[glossary] -Example Glossary ----------------- -Glossaries are optional. Glossaries entries are an example of a style -of AsciiDoc labeled lists. - -[glossary] -A glossary term:: - The corresponding (indented) definition. - -A second glossary term:: - The corresponding (indented) definition. - - -[colophon] -Example Colophon ----------------- -Text at the end of a book describing facts about its production. - - -[index] -Example Index -------------- -/////// - -//////////////////////////////////////////////////////////////// -The index is normally left completely empty, it's contents being -generated automatically by the DocBook toolchain. -//////////////////////////////////////////////////////////////// diff --git a/manuals/developer-guide/src/main/asciidoc/capwap/capwap-dev.adoc b/manuals/developer-guide/src/main/asciidoc/capwap/capwap-dev.adoc deleted file mode 100644 index 14963377d..000000000 --- a/manuals/developer-guide/src/main/asciidoc/capwap/capwap-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== CAPWAP Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/capwap-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/cardinal/odl-cardinal-dev.adoc b/manuals/developer-guide/src/main/asciidoc/cardinal/odl-cardinal-dev.adoc deleted file mode 100644 index 7025ef68e..000000000 --- a/manuals/developer-guide/src/main/asciidoc/cardinal/odl-cardinal-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== Cardinal: OpenDaylight Monitoring as a Service - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/cardinal_-opendaylight-monitoring-as-a-service.rst diff --git a/manuals/developer-guide/src/main/asciidoc/controller/config-initial.adoc b/manuals/developer-guide/src/main/asciidoc/controller/config-initial.adoc deleted file mode 100644 index 2f768ed5e..000000000 --- a/manuals/developer-guide/src/main/asciidoc/controller/config-initial.adoc +++ /dev/null @@ -1,570 +0,0 @@ -// https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Configuration:Initial - -// FIXME: Update this section to provide correct Lithium related information - -=== Initial Configuration -The Initial configuration of the controller involves two methods. - - -* Using the etc/custom.properties property file to pass configuration properties to the OSGi bundles besides the config subsystem. -* Using the Configuration Persisters to push the initial configuration for modules managed by the config subsystem. - -==== Using the etc/custom.properties property file - -The config.ini property file can be used to provide a set of properties for any OSGi bundle deployed to the controller. It is usually used to configure bundles that are not managed by the config subsystem. For details, see '_etc_custom_properties'. - -==== Using configuration persister - -Configuration persister is a default service in the controller, and is started automatically using the OSGi Activator. Its purpose is to load the initial configuration for the config subsystem and store a snapshot for every new configuration state pushed to the config-subsystem from external clients. -For details, see '_configuration_persister'. - - -==== etc/custom.properties - -Various parts of the system that are not under the configuration subsystem use the file `etc/custom.properties`. Changes to this file apply after a server restart. The tabulation of several important configuration keys and values follows: - -[cols="2*", width="75%"] -|=== - -|Setting | Description -| yangstore.blacklist=.\*controller.model.* | This regular expression (can be OR-ed using pipe character) tells NETCONF to exclude the yang files found in the matching bundle symbolic name from the hello message. This is helpful when dealing with a NETCONF client that has parsing problems. -| netconf.config.persister.* settings | See '_opendaylight_controller_configuration_initial'. -| netconf.tcp.address=0.0.0.0 netconf.tcp.port=8383 + - -netconf.ssh.address=0.0.0.0 netconf.ssh.port=1830 netconf.ssh.pk.path = ./configuration/RSA.pk + - -netconf.tcp.client.address=127.0.0.1 netconf.tcp.client.port=8383 | These settings specify the netconf server bindings. IP address 0.0.0.0 is used when all available network interfaces must be used by the netconf server. When starting the ssh server, the user must provide a private key. The actual authentication is done in the user admin module. By default, users admin:admin and netconf:netconf can be used to connect by means of ssh. Since the ssh bridge acts as a proxy, one needs to specify the netconf plaintext TCP address and port. These settings must normally be identical to those specified by netconf.tcp.* . -|=== - -=== Configuration Persister -One way of configuring the controller is to use the configuration persister to push the initial configuration for modules managed by the config subsystem. - -==== Using configuration persister - -The configuration persister is a default service in the controller, and is started automatically using the OSGi Activator. -Its purpose: + - -* Load the initial configuration for the config subsystem. -* Store a snapshot for every new configuration state pushed to the config-subsystem from external clients. + - -It retrieves the base configuration from the config.ini property file, and tries to load the configuration for the config subsystem. -The configuration for the config subsystem is pushed as a set of edit-config netconf rpcs followed by a commit rpc since the config persister acts as a netconf client. - -*Configuration persister lifecycle:* + - -. Start the config persister service at _config-persister-impl_ bundle startup. -. Retrieve the base configuration of the adapters from the config.ini property file. -. Initialize the backing storage adapters. -. Initialize the netconf client, and connect to the netconf endpoint of the config subsystem. -. Load the initial configuration snapshots from the latest storage adapter. -. Send the edit-config rpc with the initial configuration snapshots. -. Send the commit rpc. -. Listen for any of the following changes to the configuration and persist a snapshot. - -*Configuration Persister interactions:* + - -.Persister -image::Persister.jpg[width=500] - -==== Current configuration for controller distribution - -The _config.ini_ property file contains the following configuration for the configuration persister: + ----- -netconf.config.persister.active=1,2 - -netconf.config.persister.1.storageAdapterClass=org.opendaylight.controller.config.persist.storage.directory.autodetect.AutodetectDirectoryStorageAdapter - -netconf.config.persister.1.properties.directoryStorage=configuration/initial/ - -netconf.config.persister.1.readonly=true - - -netconf.config.persister.2.storageAdapterClass=org.opendaylight.controller.config.persist.storage.file.xml.XmlFileStorageAdapter - -netconf.config.persister.2.properties.fileStorage=configuration/current/controller.currentconfig.xml - -netconf.config.persister.2.properties.numberOfBackups=1 ----- - -With this configuration, the configuration persister initializes two adapters: + - -* **AutodetectDirectoryStorageAdapter** to load the initial configuration files from the _configuration/initial/_ folder. These files will be pushed as the initial configuration for the config subsystem. Since this adapter is Read only, it will not store any configuration snapshot during the controller lifecycle. -* **XmlFileStorageAdapter** to store snapshots of the current configuration after any change in the file _configuration/current/controller.currentconfig.xml_ (Only 1 snapshot backup is kept; every new change overwrites the previous one). + - -The initial configuration in the controller distribution consists of 2 files in the https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Configuration:Initial#Persisted_snapshot_format[xml format]. + - - -* configuration/initial/00-netty.xml: + -[source,xml] ----- - - - urn:opendaylight:params:xml:ns:yang:controller:netty?module=netty&revision=2013-11-19 - urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor?module=netty-event-executor&revision=2013-11-12 - urn:opendaylight:params:xml:ns:yang:controller:netty:threadgroup?module=threadgroup&revision=2013-11-07 - urn:opendaylight:params:xml:ns:yang:controller:netty:timer?module=netty-timer&revision=2013-11-19 - - - - - - - netty:netty-threadgroup-fixed - global-boss-group - - - netty:netty-threadgroup-fixed - global-worker-group - - - netty:netty-hashed-wheel-timer - global-timer - - - netty:netty-global-event-executor - global-event-executor - - - - - - netty:netty-threadgroup - - global-boss-group - /modules/module[type='netty-threadgroup-fixed'][name='global-boss-group'] - - - global-worker-group - /modules/module[type='netty-threadgroup-fixed'][name='global-worker-group'] - - - - netty:netty-event-executor - - global-event-executor - /modules/module[type='netty-global-event-executor'][name='global-event-executor'] - - - - netty:netty-timer - - global-timer - /modules/module[type='netty-hashed-wheel-timer'][name='global-timer'] - - - - - - - ----- -This configuration snapshot instantiates netty utilities, which will be utilized by the controller components that use netty internally. + - -*configuration/initial/01-md-sal.xml:* + ----- - - - - - - - - prefix:schema-service-singleton - yang-schema-service - - - prefix:hash-map-data-store - hash-map-data-store - - - prefix:dom-broker-impl - dom-broker - - dom:dom-data-store - - hash-map-data-store - - - - - prefix:binding-broker-impl - binding-broker-impl - - binding:binding-notification-service - binding-notification-broker - - - binding:binding-data-broker - binding-data-broker - - - - prefix:runtime-generated-mapping - runtime-mapping-singleton - - - prefix:binding-notification-broker - binding-notification-broker - - - prefix:binding-data-broker - binding-data-broker - - dom:dom-broker-osgi-registry - dom-broker - - - binding:binding-dom-mapping-service - runtime-mapping-singleton - - - - - - - - dom:schema-service - - yang-schema-service - /modules/module[type='schema-service-singleton'][name='yang-schema-service'] - - - - binding:binding-notification-service - - binding-notification-broker - /modules/module[type='binding-notification-broker'][name='binding-notification-broker'] - - - - dom:dom-data-store - - hash-map-data-store - /modules/module[type='hash-map-data-store'][name='hash-map-data-store'] - - - - binding:binding-broker-osgi-registry - - binding-osgi-broker - /modules/module[type='binding-broker-impl'][name='binding-broker-impl'] - - - - binding:binding-rpc-registry - - binding-rpc-broker - /modules/module[type='binding-broker-impl'][name='binding-broker-impl'] - - - - binding-impl:binding-dom-mapping-service - - runtime-mapping-singleton - /modules/module[type='runtime-generated-mapping'][name='runtime-mapping-singleton'] - - - - dom:dom-broker-osgi-registry - - dom-broker - /modules/module[type='dom-broker-impl'][name='dom-broker'] - - - - binding:binding-data-broker - - binding-data-broker - /modules/module[type='binding-data-broker'][name='binding-data-broker'] - - - - - - - - - - urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor?module=netty-event-executor&revision=2013-11-12 - urn:opendaylight:params:xml:ns:yang:controller:threadpool?module=threadpool&revision=2013-04-09 - urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&revision=2013-10-28 - urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom?module=opendaylight-md-sal-dom&revision=2013-10-28 - urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:impl?module=opendaylight-sal-binding-broker-impl&revision=2013-10-28 - urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:impl?module=opendaylight-sal-dom-broker-impl&revision=2013-10-28 - urn:opendaylight:params:xml:ns:yang:controller:md:sal:common?module=opendaylight-md-sal-common&revision=2013-10-28 - - - ----- -This configuration snapshot instantiates md-sal modules. - -After the controller is started, all these modules will be instantiated and configured. They can be further referenced from the new modules as dependencies, reconfigured, or even deleted. -These modules are considered to be the base configuration for the controller and the purpose of them being configured automatically is to simplify the process of controller configuration for users, since the base modules will already be ready for use. - -=== Adding custom initial configuration - -There are multiple ways to add the custom initial confguration to the controller distribution: - -. Manually create the config file, and put it in the initial configuration folder. -. Reconfigure the running controller using the yuma yangcli tool. The XmlFileStorageAdapter adapter will store the current snapshot, and on the next startup of the controller (assuming it was not rebuilt since), it will load the configuration containing the changes. - -==== Custom initial configuration in bgpcep distribution - -The BGPCEP project will serve as an example for adding the custom initial configuration. The bgpcep project contains the custom initial configuration that is based on the initial configuration from the controller. It adds new modules, which depend on MD-SAL and netty modules created with the initial config files of the controller. There are multiple config files in the bgpcep project. Only the 30-programming.xml file located under the programming-parent/controller-config project will be described in this section. This file contains the configuration for an instance of the instruction-scheduler module: - ----- - - - - - - urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&revision=2013-10-28 - urn:opendaylight:params:xml:ns:yang:controller:netty?module=netty&revision=2013-11-19 - urn:opendaylight:params:xml:ns:yang:controller:programming:impl?module=config-programming-impl&revision=2013-11-15 - urn:opendaylight:params:xml:ns:yang:controller:programming:spi?module=config-programming-spi&revision=2013-11-15 - - - - - - - prefix:instruction-scheduler-impl - global-instruction-scheduler - - binding:binding-data-broker - binding-data-broker - - - binding:binding-notification-service - binding-notification-broker - - - binding:binding-rpc-registry - binding-rpc-broker - - - netty:netty-timer - global-timer - - - - - - - pgmspi:instruction-scheduler - - global-instruction-scheduler - /modules/module[type='instruction-scheduler-impl'][name='global-instruction-scheduler'] - - - - - - - ----- -Instruction-scheduler is instantiated as a module of type _instruction-scheduler-impl_ with the name *global-instruction-scheduler:* + ----- - - prefix:instruction-scheduler-impl - global-instruction-scheduler - ... ----- -There is also an alias created for this module instancfe, and the alias is *global-instruction-scheduler* of type _instruction-scheduler_: + ----- -... - - pgmspi:instruction-scheduler - - global-instruction-scheduler - /modules/module[type='instruction-scheduler-impl'][name='global-instruction-scheduler'] - - -... ----- -The type of the alias is instruction-scheduler. This type refers to a certain service that is implemented by the instruction-scheduler-impl module. With this service type, the global-instruction-scheduler instance can be injected into any other module that requires instruction-scheduler as a dependency. -One module can provide (implement) multiple services, and each of these services can be assigned an alias. This alias can be later used to reference the implementation it is pointing to. -If no alias is assigned by the user, a default alias will be assigned for each provided service. -The default alias is constructed from the name of the module instance with a prefix *ref_* and a possible suffix containing a number to resolve name clashes. -It is recommended that users provide aliases for each service of every module instance, and use these aliases for dependency injection. References to the alias global-instruction-scheduler can be found in subsequent config files in the bgpcep project for example, _32-pcep.xml_ located under the _pcep-parent/pcep-controller-config_ project. - -The configuration contains four dependencies on the MD-SAL and the netty modules: + ----- -... - - binding:binding-data-broker - binding-data-broker - - - binding:binding-notification-service - binding-notification-broker - - - binding:binding-rpc-registry - binding-rpc-broker - - - netty:netty-timer - global-timer - -... ----- - -MD-SAL dependencies: + - -* Data-provider dependency -* Notification-service dependency -* Rpc-registry dependency - -All MD-SAL dependencies can be found in the https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Configuration:Initial#Current_configuration_for_controller_distribution[MD-SAL initial configuration file]. For example, rpc-registry dependency points to an alias binding-rpc-broker of the type binding-rpc-registry. This alias further points to an instance of the binding-broker-impl named binding-broker-impl. -The Yang module that defines the binding-broker-impl module : https://git.opendaylight.org/gerrit/gitweb?p=controller.git;f=opendaylight/md-sal/sal-binding-broker/src/main/yang/opendaylight-binding-broker-impl.yang;a=blob[opendaylight-binding-broker-impl.yang]. - -*Netty dependencies:* + - -* Timer dependency - -This configuration expects these dependencies to be already up and ready. It is the responsibility of the configuration subsystem to find the dependency and inject it. -If the configuration of a module points to a non-existing dependency, the configuration subsystem will produce an exception during the validation phase. -Every user-created configuration needs to point to existing dependencies. In the case of multiple initial configuration files that depend on one another, the resolution order can be ensured by the names of the files. Files are sorted by their names in ascending order. This means that every configuration file will have the visibility of modules from all previous configuration files by means of aliases. - -NOTE: The configuration provided by initial config files can also be pushed to the controller at runtime using netconf client. The whole configuration located under the data tag needs to be inserted into the config tag in the edit-config rpc. For more information, see https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Main#Examples[Examples]. - -==== Configuration Persister - -As a part of the configuration subsystem, the purpose of the persister is to save and load a permanent copy of a configuration. The Persister interface represents basic operations over a storage - persist configuration and load last config, configuration snapshot is represented as string and set of it's capabilities. StorageAdapter represents an adapter interface to the ConfigProvider - subset of BundleContext, allowing access to the OSGi framework system properties. - -===== Persister implementation - -Configuration persister implementation is part of the Controller NETCONF. PersisterAggregator class is the implementation of the Presister interface. The functionality is delegated to the storage adapters. Storage adapters are low level persisters that do the heavy lifting for this class. Instances of storage adapters can be injected directly by means of the constructor, or instantiated from a full name of its class provided in a properties file. There can be many persisters configured, and varying numbers of them can be used. - -*Example of presisters configuration:* + ----- -netconf.config.persister.active=2,3 - # read startup configuration - netconf.config.persister.1.storageAdapterClass=org.opendaylight.controller.config.persist.storage.directory.xml.XmlDirectoryStorageAdapter - netconf.config.persister.1.properties.fileStorage=configuration/initial/ - - netconf.config.persister.2.storageAdapterClass=org.opendaylight.controller.config.persist.storage.file.FileStorageAdapter - netconf.config.persister.2.readonly=true - netconf.config.persister.2.properties.fileStorage=configuration/current/controller.config.1.txt - - netconf.config.persister.3.storageAdapterClass=org.opendaylight.controller.config.persist.storage.file.FileStorageAdapter - netconf.config.persister.3.properties.fileStorage=configuration/current/controller.config.2.txt - netconf.config.persister.3.properties.numberOfBackups=3 ----- - -During server startup, ConfigPersisterNotificationHandler requests the last snapshot from the underlying storages. Each storage can respond by giving a snapshot or an absent response. The PersisterAggregator#loadLastConfigs() will search for the first non-absent response from storages ordered backwards as user specified (first '3', then '2'). When a commit notification is received, '2' will be omitted because the read-only flag is set to true, so only '3' will have a chance to persist the new configuration. -If read-only was false, or not specified, both storage adapters would be called in the order specified by 'netconf.config.persister' property. - -=== Persister Notification Handler - -ConfigPersisterNotificationHandler class is responsible for listening for netconf notifications containing the latest committed configuration. -The listener can handle incoming notifications, or delegates the configuration saving or loading to the persister. - -==== Storage Adapter implementations - -*XML File Storage* + - -The XmlFileStorageAdapter implementation stores configuration in an xml file. - -*XML Directory Storage* + - -XmlDirectoryStorageAdapter retrieves the initial configuration from a directory. If multiple xml files are present, files are ordered based on the file names and pushed in this order (for example, 00.xml, then 01.xml..) Each file defines its required capabilities, so it will be pushed when those capabilities are advertized by ODL. Writing to this persister is not supported. - -*No-Operation Storage* + - -NoOpStorageAdapter serves as a dummy implementation of the storage adapter. - -*Obsolete storage adapters* + - -* File Storage - -* FileStorageAdapter implements StorageAdapter, and provides file based configuration persisting. -File path and name is stored as a property and a number of stored backups, expressing the count of the last configurations to be persisted too. -The implementation can handle persisting input configuration, and load the last configuration. - -* Directory Storage - -* DirectoryStorageAdapter retrieves initial configurations from a directory. If multiple files are present, snapshot and required capabilities will be merged together. See configuration later on this page for details. Writing to this persister is not supported. - -* Autodetect Directory Storage - -* AutodetectDirectoryStorageAdapter retrieves initial configuration from a directory (exactly as Xml Directory Storage) but supports xml as well as plaintext format for configuration files. Xml and plaintext files can be combined in one directory. Purpose of this persister is to keep backwards compatibility for plaintext configuration files. - -IMPORTANT: This functionality will be removed in later releases since Plaintext File/Directory adapters are deprecated, and will be fully replaced by xml storage adapters. - -===== Persisted snapshot format - -Configuration snapshots are persisted in xml files for both file and directory adapters. They share the same format: + ----- - - - urn:opendaylight:params:xml:ns:yang:controller:netty?module=netty&revision=2013-11-19 - ... - - - - - - ... - - - - ... - - - - - - ----- -The whole snapshot is encapsulated in the snapshot tag that contains two children elements: + - -* The required-capabilities tag contains the list of yang capabilities that are required to push configurations located under the configuration tag. The config persister will not push the configuration before the netconf endpoint for the config subsystem reports all needed capabilities. Every yang model that is referenced within this xml file (as namespace for xml tag) must be referenced as a capability in this list. -* The configuration tag contains the configurations to be pushed to the config subsystem. It is wrapped in a data tag with the base netconf namespace. The whole data tag, with all its child elements, will be inserted into an edit-config rpc as config tag. For more information about the structure of configuration data, see base yang model for the config subsystem and all the configuration yang files for the controller modules as well as those provided examples. Examples contain multiple explained edit-config rpcs that change the configuration. - -NOTE: XML File adapter adds additional tags to the xml format since it supports multiple snapshots per file. - -The xml format for xml file adapter: + ----- - - - - - urn:opendaylight:params:xml:ns:yang:controller:shutdown:impl?module=shutdown-impl&revision=2013-12-18 - - - - - .... - - - ... - - - - - - - urn:opendaylight:params:xml:ns:yang:controller:shutdown:impl?module=shutdown-impl&revision=2013-12-18 - - - - - .... - - - ... - - - - - - ----- diff --git a/manuals/developer-guide/src/main/asciidoc/controller/config-java-gen.adoc b/manuals/developer-guide/src/main/asciidoc/controller/config-java-gen.adoc deleted file mode 100644 index 90d7ffcc6..000000000 --- a/manuals/developer-guide/src/main/asciidoc/controller/config-java-gen.adoc +++ /dev/null @@ -1,96 +0,0 @@ -// https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Java_Code_Generator -==== Java Code Generator - -===== YANG to Java code generator - -The Java code for the configuration system is generated by the yang-maven-plugin -and the yang-jmx-generator-plugin. -The input Yang module files are converted to java files by the definition of -the module and the specified templates. the generated java code can represent -interfaces, classes, or abstract classes used for configuration. - -====== Service interfaces generating - -Service interfaces (SI) are generated from YANG "service-types". Each SI must -be defined as "identity" with a "base" statement set to "config:service-type", -or another SI. This is because a service must have a globally unique name. -Each SI must be annotated with @ServiceInterfaceAnnotation, and must extend -AbstractServiceInterface. - -*Sample YANG module representing service interface* + - ----- -module config-test { - yang-version 1; - namespace "urn:opendaylight:params:xml:ns:yang:controller:test"; - prefix "test"; - - import config { prefix config; revision-date 2013-04-05; } - - description - "Testing API"; - - revision "2013-06-13" { - description - "Initial revision"; - } - - identity testing { - description - "Test api"; - - base "config:service-type"; - config:java-class "java.lang.AutoCloseable"; - } -} ----- -The "description" node of identity is generated as javadoc in the service interface. + -The "config:java-class" is generated as *ServiceInterfaceAnnotation*. It specifies -java classes or interfaces in the "osgiRegistrationTypes" parameter. The module -implementing this service interface must instantiate a java object that can be -cast to any of the java types defined in "osgiRegistrationTypes". - -*Generated java source file: AutoCloseableServiceInterface* + - ----- -package %prefix%.test; - -/** -* Test api -*/ -@org.opendaylight.controller.config.api.annotations.Description(value = "Test api") -@org.opendaylight.controller.config.api.annotations.ServiceInterfaceAnnotation(value = "testing", osgiRegistrationType = java.lang.AutoCloseable.class) -public interface AutoCloseableServiceInterface extends org.opendaylight.controller.config.api.annotations.AbstractServiceInterface -{ - -} ----- - -====== Module stubs generating - -Modules are constructed during configuration transaction. A module implements -the ModuleMXBean interface. The ModuleMXBean interface represents getters and -setters for attributes that will be exposed to the configuration registry by -means of JMX. Attributes can either be simple types, or composite types. - -Each ModuleMXBean must be defined in yang as "identity" with the base statement -set to "config:module-type". Not only are ModuleMXBeans generated, but also -ModuleFactory and Module stubs. Both are first generated as abstract classes -with almost full functionality. Then their implementations, which are allowed -to be modified by users, are generated, but only once. - -===== Runtime beans generating - -Runtime JMX beans are purposed to be the auditors: they capture data about -running module instances. A module can have zero or more runtime beans. Runtime -beans are hierarchically ordered, and each must be uniquely identified. -A runtime bean is defined as a configuration augment of a module, from which -interface RuntimeMXBean, RuntimeRegistrator, and RuntimeRegistretion are generated. -Augment definition contains arguments representing the data of a module that -must be watched. - -===== RPCs - -Method calls in yang must be specified as top level elements. The context, -where an RPC operation exits, must be defined in the RPC definition itself, -and in the runtime bean that provides method implementation. diff --git a/manuals/developer-guide/src/main/asciidoc/controller/config-logback.adoc b/manuals/developer-guide/src/main/asciidoc/controller/config-logback.adoc deleted file mode 100644 index b6a902ba1..000000000 --- a/manuals/developer-guide/src/main/asciidoc/controller/config-logback.adoc +++ /dev/null @@ -1,364 +0,0 @@ -// FIXME: Probably deprecated -// https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Examples:Logback#Logback_configuration:_Netconf -=== OpenDaylight Controller Configuration: Logback Examples -==== Logback Configuration Example - -The Logback logger configuration is part of the config subsystem. This module allows changes to the Logback configuration at runtime. It is used here as an example to demonstrate the YANG to Java code generator and to show how the configuration transaction works. - -==== Java code generation -The logging configuration YANG module definition can be found in the config-logging.yang file. The code is generated by the yang-maven-plugin and yang-jmx-generator-plugin. The output java files are located as defined in the plugin configuration, where additional configuration parameters can be set. The logback module is defined as identity, with the base "config:module-type"; it does not provide or depend on any service interface. ----- -identity logback { - description - "Actual state of logback configuration."; - base config:module-type; - config:java-name-prefix Logback; -} ----- -The next logback module attributes are defined in the "/config:modules/config:module/config:configuration" augment as the snippet below shows. ----- -augment "/config:modules/config:module/config:configuration" { - case logback { - when "/config:modules/config:module/config:type = 'logback'"; - - list console-appenders { - - leaf encoder-pattern { - type string; - mandatory true; - } - - leaf threshold-filter { - type string; - default 'ALL'; - } - - leaf name { - type string;; - mandatory true; - } - config:java-name-prefix ConsoleAppenderTO; - } - ... ----- -Now LogbackModule and LogbackModuleFactory can be generated. In fact, three more java files related to this module will be generated. By the augment definition, TypeObjects too are generated (that is to say, ConsoleAppenderTO). They are regular java classes with getters and setters for arguments defined as leaves. - -* *LogbackModuleMXBean* is the interface containing getters and setters for attributes defined in the configuration augment. -* *AbstractLogbackModule* is the abstract java class, which implements Module, RuntimeBeanRegistratorAwareModule, and LogbackModuleMXBean. It contains almost all functionality, except validate and createInstance methods. -* *AbstractLogbackModuleFactory* is the abstract java class responsible for creating module instances. It implements the ModuleFactory interface. -* *LogbackModule* class extends AbstractLogbackModule. It is located in a different place (source/main/java) and can be modified by the user, so that the abstract method is implemented and the validate method is overridden. -* *LogbackModuleFactory* class extends AbstractLogbackModuleFactory and overrides its instantiateModule methods. -Next, the runtime bean is defined in the "/config:modules/config:module/config:state" augment. + ----- -augment "/config:modules/config:module/config:state" { - case logback { - when "/config:modules/config:module/config:type = 'logback'"; - - rpcx:rpc-context-instance "logback-rpc"; - - list status { - config:java-name-prefix StatusTO; - - leaf level { - type string; - } - - leaf message { - type string; - } - - leaf date { - type uint32; - } - } - } -} ----- -* The *Generator* plugin creates another set of java files. -* *LogbackRuntimeMXBean* is the interface extending RuntimeBean. It contains the getter method for the argument defined in the augment. -* *LogbackRuntimeRegistrator* class serves as the registrator for runtime beans. -* *LogbackRuntimeRegistration* class serves as the registration ticket. An instance is returned after registration. - -The Logback config also defines logback-rpc with the reset method. It is also defined in the state augment, owing to the context. ----- -identity logback-rpc; -rpc reset { - input { - uses rpcx:rpc-context-ref { - refine context-instance { - rpcx:rpc-context-instance logback-rpc; - } - } - } -} ----- -The Reset method is defined in the LogbackRuntimeMXBean interface. - -==== Logback configuration: Jolokia - -To create configuration on the running OSGi server: Jolokia (http://www.jolokia.org/) is used as a JMX-HTTP bridge, which listens at http://localhost:8080/controller/nb/v2/jolokia and curl to request over HTTP. - -. Start the controller. Find more here: https://wiki.opendaylight.org/view/OpenDaylight_Controller:Pulling,_Hacking,_and_Pushing_the_Code_from_the_CLI -. Request Jolokia: ----- -curl http://localhost:8080/controller/nb/v2/jolokia --user admin:admin ----- -The response must resemble the following: + ----- -{ - "timestamp": 1382425537, - "status": 200, - "request": { - "type": "version" - }, - "value": { - "protocol": "7.0", - "agent": "1.1.1", - "info": { - "product": "equinox", - "vendor": "Eclipse", - "version": "3.8.1.v20120830-144521" - } - } -} ----- -Jolokia is working. -To configure Logback, first, create a configuration transaction. ConfigResgistryModule offers the operation beginConfig(), and to invoke it: ----- -curl -X POST -H "Content-Type: application/json" -d '{"type":"exec","mbean":"org.opendaylight.controller:type=ConfigRegistry","arguments":[],"operation":"beginConfig"}' http://localhost:8080/controller/nb/v2/jolokia --user admin:admin ----- -The configuration transaction was created. The response received: + ----- -{ - "timestamp": 1383034210, - "status": 200, - "request": { - "operation": "beginConfig", - "mbean": "org.opendaylight.controller:type=ConfigRegistry", - "type": "exec" - }, - "value": { - "objectName": "org.opendaylight.controller:TransactionName=ConfigTransaction-1-2,type=ConfigTransaction" - } -} ----- -At this stage, the transaction can be aborted, but we want to create the module bean to be configured. In the created ConfigTransaction call createModule method, the module identifier is logback, and the name must be singleton as only one instance of the Logback configuration is needed. ----- -curl -X POST -H "Content-Type: application/json" -d '{"type":"exec","mbean":"org.opendaylight.controller:TransactionName=ConfigTransaction-1-2,type=ConfigTransaction","arguments":["logback","singleton"],"operation":"createModule"}' http://localhost:8080/controller/nb/v2/jolokia --user admin:admin ----- -The LogbackModule bean was created. The response returned: ----- -{ - "timestamp": 1383034580, - "status": 200, - "request": { - "operation": "createModule", - "mbean": "org.opendaylight.controller:TransactionName=ConfigTransaction-1-2,type=ConfigTransaction", - "arguments": [ - "logback", - "singleton" - ], - "type": "exec" - }, - "value": { - "objectName": "org.opendaylight.controller:TransactionName=ConfigTransaction-1-2,instanceName=singleton,moduleFactoryName=logback,type=Module" - } -} ----- -* The configuration bean attributes are set to values obtained from the loggers configuration, with which the server was started. To see attributes, request: ----- -curl -X POST -H "Content-Type: application/json" -d '{"type":"read", "mbean":"org.opendaylight.controller:instanceName=singleton,TransactionName=ConfigTransaction-1-2,type=Module,moduleFactoryName=logback"}' http://localhost:8080/controller/nb/v2/jolokia --user admin:admin ----- -In the response body, the value contains all attributes (CompositeData) and its nested attribute values. -* Now, the proposed configuration can be committed. ----- -curl -X POST -H "Content-Type: application/json" -d '{"type":"exec","mbean":"org.opendaylight.controller:type=ConfigRegistry","arguments":["org.opendaylight.controller:instanceName=singleton,TransactionName=ConfigTransaction-1-2,type=Module,moduleFactoryName=logback"],"operation":"commitConfig"}' http://localhost:8080/controller/nb/v2/jolokia --user admin:admin ----- -The configuration was successfully validated and committed, and the module instance created. ----- -{ - "timestamp": 1383034793, - "status": 200, - "request": { - "operation": "commitConfig", - "mbean": "org.opendaylight.controller:type=ConfigRegistry", - "arguments": [ - "org.opendaylight.controller:instanceName=singleton,TransactionName=ConfigTransaction-1-2,type=Module,moduleFactoryName=logback" - ], - "type": "exec" - }, - "value": { - "newInstances": [ - { - "objectName": "org.opendaylight.controller:instanceName=singleton,moduleFactoryName=logback,type=Module" - } - ], - "reusedInstances": [], - "recreatedInstances": [] - } -} ----- -* The runtime bean was registered, and can provide the status information of the configuration and rpc operation reset. To see the status, try requesting: ----- -curl -X POST -H "Content-Type: application/json" -d '{"type":"read","mbean":"org.opendaylight.controller:instanceName=singleton,type=RuntimeBean,moduleFactoryName=logback"}' http://localhost:8080/controller/nb/v2/jolokia --user admin:admin ----- -The entire logback status is in the response body. - -* To invoke the rpc method reset: ----- -curl -X POST -H "Content-Type: application/json" -d '{"type":"exec", -"mbean":"org.opendaylight.controller:instanceName=singleton,type=RuntimeBean,moduleFactoryName=logback", -"operation":"reset","arguments":[]}' http://localhost:8080/controller/nb/v2/jolokia --user admin:admin ----- -The answer: ----- -{ - "timestamp": 1383035001, - "status": 200, - "request": { - "operation": "reset", - "mbean": "org.opendaylight.controller:instanceName=singleton,moduleFactoryName=logback,type=RuntimeBean", - "type": "exec" - }, - "value": null -} ----- -Now, the runtime bean status attribute will be empty: ----- -{ - "timestamp": 1383035126, - "status": 200, - "request": { - "mbean": "org.opendaylight.controller:instanceName=singleton,moduleFactoryName=logback,type=RuntimeBean", - "type": "read" - }, - "value": { - "StatusTO": [] - } -} ----- -==== Logback configuration: NETCONF - -In this case, NETCONF RPCs are used to configure logback. The Netconf server listens at port 8383. To communicate over TCP, telnet is used. More about NETCONF is available at: http://tools.ietf.org/html/rfc6241. Netconf implementation is a part of the Controller - netconf-subsystem. The RPCs of Netconf are XML, and the operations are mapped to JMX operations. -* A server re-start is required. The procedure is the same as above. -* Open a terminal and connect to the server: ----- -telnet localhost 8383 ----- -A Hello message received from the server contains the server capabilities and session-id. To establish connection to the client,send a hello message: ----- - - - urn:ietf:params:netconf:base:1.0 - - -]]>]]> ----- -* With the connection created, the client and server can communicate. To see the running modules and services, send an RPC to the server: ----- - - - - - - - -]]>]]> ----- - -* To configure logback, create a configuration transaction, and create a configuration module. It can be done in one step (in client point of view): ----- - - - - - - merge - - - - singleton - - logging:logback - - - - - - -]]>]]> ----- - -If the configuration worked, the client receives a positive response: - ----- - - - -]]>]]> ----- - -* The Logback configuration bean attributes contain values loaded from the running Logback configuration. Send a request to the server with an RPC: ----- - - - - - - - -]]>]]> ----- - -* The reply includes the entire configuration that started the server. Assume that we want to change the RollingFileAppender named opendaylight.log attributes - maxFileSize, filename, and maxHistory. ( attribute of TimeBasedRollingPolicy). The proposed configuration: - ----- - - - - - - merge - - - - singleton - - logging:logback - - - true - 5MB - logs/opendaylight-new.log - opendaylight.log - logs/opendaylight.%d.log.zip - %date{"yyyy-MM-dd HH:mm:ss.SSS z"} [%thread] %-5level %logger{35} - %msg%n - false - 7 - TimeBasedRollingPolicy - - - - - - -]]>]]> ----- -This configuration is merged with the proposed module configuration. If it passes the validation process successfully, an "ok" reply is received. - -* The configuration bean is ready to be committed: ----- - - - -]]>]]> ----- -If successful, the ok message is received obtained, and the logback configuration is set. To verify, look into the logs directory to find a new log file named opendaylight-new.log - -* Correctly close the session with the session-id: ----- - - - -]]>]]> ----- diff --git a/manuals/developer-guide/src/main/asciidoc/controller/config-sample-deprecated.adoc b/manuals/developer-guide/src/main/asciidoc/controller/config-sample-deprecated.adoc deleted file mode 100644 index 4832a80e1..000000000 --- a/manuals/developer-guide/src/main/asciidoc/controller/config-sample-deprecated.adoc +++ /dev/null @@ -1,527 +0,0 @@ -// https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Examples:Sample_Project#Generated_java_files -==== Example sample project -*Sample maven project* + - -In this example, we will create a maven project that provides two modules, each implementing one service. We will design a simple configuration, as well as runtime data for each module using yang. -A sample maven project called config-demo was created. This project contains two Java interfaces: Foo and Bar. Each interface has one default implementation per interface, FooImpl and BarImpl. Bar is the producer in our example and produces integers when the method getNextEvent() is called. Foo is the consumer, and its implementation depends on a Bar instance. Both implementations require some configuration that is injected by means of constructors. - -* Bar.java: ----- -package org.opendaylight.controller.config.demo; - -public interface Bar { - - int getNextEvent(); - -} ----- -* BarImpl.java: ----- -package org.opendaylight.controller.config.demo; - -public class BarImpl implements Bar { - - private final int l1, l2; - private final boolean b; - - public BarImpl(int l1, int l2, boolean b) { - this.l1 = l1; - this.currentL = l1; - this.l2 = l2; - this.b = b; - } - - private int currentL; - - @Override - public int getNextEvent() { - if(currentL==l2) - return -1; - return currentL++; - } -} ----- -* Foo.java: ----- -package org.opendaylight.controller.config.demo; - -public interface Foo { - - int getEventCount(); -} ----- -* FooImpl.java: ----- -package org.opendaylight.controller.config.demo; - -public class FooImpl implements Foo { - - private final String strAttribute; - private final Bar barDependency; - private final int intAttribute; - - public FooImpl(String strAttribute, int intAttribute, Bar barDependency) { - this.strAttribute = strAttribute; - this.barDependency = barDependency; - this.intAttribute = intAttribute; - } - - @Override - public int getEventCount() { - int count = 0; - while(barDependency.getNextEvent() != intAttribute) { - count++; - } - return count; - } -} ----- -* pom.xml (config-demo project is defined as a sub-module of the controller project, and at this point contains only the configuration for maven-bundle-plugin): ----- - - - 4.0.0 - - - commons.opendaylight - org.opendaylight.controller - 1.4.1-SNAPSHOT - ../commons/opendaylight/pom.xml - - org.opendaylight.controller - 0.1.1-SNAPSHOT - config-demo - bundle - ${project.artifactId} - - 3.0.4 - - - - - - org.apache.felix - maven-bundle-plugin - 2.4.0 - true - - - ${project.groupId}.${project.artifactId} - - org.opendaylight.controller.config.demo, - - - - - - - - ----- - -==== Describing the module configuration using yang -In order to fully leverage the utilities of the configuration subsystem, we need to describe the services, modules, their configurations, and the runtime state using the yang modeling language. We will define two services and two modules, which will be used to configure the instances of FooImpl and BarImpl. This definition will be split into two yang files: config-demo.yang (service definition) and config-demo-impl.yang (module definition). - -* config-demo.yang ----- -module config-demo { - yang-version 1; - namespace "urn:opendaylight:params:xml:ns:yang:controller:config:demo"; - prefix "demo"; - - import config { prefix config; revision-date 2013-04-05; } - - description - "Service definition for config-demo"; - - revision "2013-10-14" { - description - "Initial revision"; - } - - // Service definition for service foo that encapsulates instances of org.opendaylight.controller.config.demo.Foo - identity foo { - description - "Foo service definition"; - - base "config:service-type"; - config:java-class "org.opendaylight.controller.config.demo.Foo"; - } - - identity bar { - description - "Bar service definition"; - - base "config:service-type"; - config:java-class "org.opendaylight.controller.config.demo.Bar"; - } -} ----- -The config yang module needs to be imported in order to define the services. There are two services defined, and these services correspond to the Java interfaces Foo and Bar (specified by the config:java-class extension). - -* config-demo-impl.yang ----- -module config-demo-impl { - - yang-version 1; - namespace "urn:opendaylight:params:xml:ns:yang:controller:config:demo:java"; - prefix "demo-java"; - - // Dependency on service definition for config-demo - /* Service definitions could be also located in this yang file or even - * in a separate maven project that is marked as maven dependency - */ - import config-demo { prefix demo; revision-date 2013-10-14;} - - // Dependencies on config subsystem definition - import config { prefix config; revision-date 2013-04-05; } - import rpc-context { prefix rpcx; revision-date 2013-06-17; } - - - description - "Service implementation for config-demo"; - - revision "2013-10-14" { - description - "Initial revision"; - } - //----- module foo-impl ----- // - // Module implementing foo service // - identity foo-impl { // - base config:module-type; // - config:provided-service demo:foo; // - config:java-name-prefix FooImpl; // - } // - // - // Configuration for foo-impl module // - augment "/config:modules/config:module/config:configuration" { // - case foo-impl { // - when "/config:modules/config:module/config:type = 'foo-impl'"; // - // - leaf str-attribute { // - type string; // - } // - // - leaf int-attribute { // - type int32; // - } // - // - // - // Dependency on bar service instance // - container bar-dependency { // - uses config:service-ref { // - refine type { // - mandatory true; // - config:required-identity demo:bar; // - } // - } // - } // - // - } // - } // - // - // Runtime state definition for foo-impl module // - augment "/config:modules/config:module/config:state" { // - case foo-impl { // - when "/config:modules/config:module/config:type = 'foo-impl'"; // - // - // - } // - } // - // ---------- // - // Module implementing bar service - identity bar-impl { - base config:module-type; - config:provided-service demo:bar; - config:java-name-prefix BarImpl; - } - - augment "/config:modules/config:module/config:configuration" { - case bar-impl { - when "/config:modules/config:module/config:type = 'bar-impl'"; - - container dto-attribute { - leaf int-attribute { - type int32; - } - - leaf int-attribute2 { - type int32; - } - - leaf bool-attribute { - type boolean; - } - } - - } - } - - augment "/config:modules/config:module/config:state" { - case bar-impl { - when "/config:modules/config:module/config:type = 'bar-impl'"; - - } - } - -} ----- -The config yang module as well as the config-demo yang module need to be imported. There are two modules defined: foo-impl and bar-impl. Their configuration (defined in the augment "/config:modules/config:module/config:configuration" block) corresponds to the configuration of the FooImpl and BarImpl Java classes. In the constructor of FooImpl.java, we see that the configuration of foo-impl module defines three similar attributes. These arguments are used to instantiate the FooImpl class. These yang files are placed under the src/main/yang folder. - -==== Updating the maven configuration in pom.xml - -The yang-maven-plugin must be added to the pom.xml. This plugin will process the yang files, and generate the configuration code for the defined modules. Plugin configuration: + ----- - - org.opendaylight.yangtools - yang-maven-plugin - ${yangtools.version} - - - - generate-sources - - - - - - org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator - - ${project.build.directory}/generated-sources/config - - - urn:opendaylight:params:xml:ns:yang:controller==org.opendaylight.controller.config.yang - - - - - true - - - - - - org.opendaylight.controller - yang-jmx-generator-plugin - ${config.version} - - - ----- -The configuration important for the plugin: the output folder for the generated files, and the mapping between the yang namespaces and the java packages (Inspect dependencies must be set to true.). The default location for the yang files is under the src/main/yang folder. This plugin is backed by the artifact yang-jmx-generator-plugin and its class org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator is responsible for code generation. This artifact is part of the configuration subsystem. - -In addition to the yang-maven-plugin, it is neccessary to add the build-helper-maven-plugin in order to add the generated sources to the build process: ----- - - org.codehaus.mojo - build-helper-maven-plugin - 1.8 - - - add-source - generate-sources - - add-source - - - - ${project.build.directory}/generated-sources/config; - - - - - ----- -Earlier, the configuration yang module in the yang files was imported. In order to acquire this yang module, we need to add a dependency to the pom file: ----- - - org.opendaylight.controller - config-api - ${config.version} - ----- -In addition, a couple of utility dependencies must be added: ----- - - org.slf4j - slf4j-api - - - com.google.guava - guava - ----- -Run *mvn clean install*. - -==== Generated java files - -A set of new source files divided into two groups is seen. The first group is located under the ${project.build.directory}/generated-sources/config directory, which was specified in the yang-maven-plugin configuration. The second group is located under the src/main/java directory. Both groups then define the package org.opendaylight.controller.config.yang.config.demo.impl. The first group contains code that must not be edited in any way, since this code can be regenerated by the plugin if necessary. The code that needs to be edited belongs to the second group and is located under src/main/java. - -===== Generated config source files examples - -* BarImplModuleMXBean.java ----- -public interface BarImplModuleMXBean -{ - public org.opendaylight.controller.config.yang.config.demo.java.DtoAttribute getDtoAttribute(); - - public void setDtoAttribute(org.opendaylight.controller.config.yang.config.demo.java.DtoAttribute dtoAttribute); - -} ----- -The BarImplModuleMXBean interface represents the getter and the setter for dtoAttribute that will be exported to the configuration registry by means of JMX. The attribute was defined in the yang model: in this case, it is the composite type which was converted to OpenType. - -* Attribute definition from config-demo-impl.yang ----- -// Module implementing bar service - identity bar-impl { - base config:module-type; - config:provided-service demo:foo; - config:java-name-prefix BarImpl; - } - - augment "/config:modules/config:module/config:configuration" { - case bar-impl { - when "/config:modules/config:module/config:type = 'bar-impl'"; - - container dto-attribute { - leaf int-attribute { - type int32; - } - - leaf int-attribute2 { - type int32; - } - - leaf bool-attribute { - type boolean; - } - } - - } - } ----- -From the container dto-attribute, the DtoAttribute java file was generated. The Class contains the plain constructor, and the getters and setters for the attributes defined as container leaves. -Not only is ModuleMXBean generated from this module definition, but also BarImplModuleFactory and BarImplModule stubs (in fact AbstractBarImplModuleFactory and AbstractBarImplModule are generated too.). - -* AbstractBarImplModule.java + -This abstract class is almost fully generated: only the method validate() has an empty body and the method createInstance() is abstract. The user must implement both methods by user. AbstractBarImplModule implements its ModuleMXBean, Module, RuntimeBeanRegistratorAwareModule, and the dependent service interface as defined in yang. Moreover, the class contains two types of constructors: one for the module created from the old module instance, and the second for module creation from scratch. - -* AbstractBarImplModuleFactory.java + -Unlike AbstractModule, AbstractFactory is fully generated, but it is still an abstract class. The factory is responsible for module instances creation, and provides two type of instantiateModule methods for both module constructor types. It implements the ModuleFactory interface. - -Next, create the runtime bean for FooImplModule. Runtime beans are designated to capture data about the running module. - -* Add runtime bean definition to config-demo-impl.yang + - -===== Modifying generated sources - -Generated source files: + - -* src/main/java/**/BarImplModule -* src/main/java/**/BarImplModuleFactory -* src/main/java/**/FooImplModule -* src/main/java/**/FooImplModuleFactory - -*BarImplModule* + -We will start by modifying BarImplModule. Two constructors and two generated methods are seen: ----- -@Override - public void validate(){ - super.validate(); - // Add custom validation for module attributes here. - } - - @Override - public java.lang.AutoCloseable createInstance() { - //TODO:implement - throw new java.lang.UnsupportedOperationException("Unimplemented stub method"); - } ----- -In *validate*, specify the validation for configuration attributes, for example: ----- -@Override - public void validate(){ - super.validate(); - Preconditions.checkNotNull(getDtoAttribute()); - Preconditions.checkNotNull(getDtoAttribute().getBoolAttribute()); - Preconditions.checkNotNull(getDtoAttribute().getIntAttribute()); - Preconditions.checkNotNull(getDtoAttribute().getIntAttribute2()); - Preconditions.checkState(getDtoAttribute().getIntAttribute() > getDtoAttribute().getIntAttribute2()); - } ----- -In *createInstance* you need to create a new instance of the bar service => Bar interface, for example: ----- -@Override - public java.lang.AutoCloseable createInstance() { - return new BarImpl(getDtoAttribute().getIntAttribute(), getDtoAttribute().getIntAttribute2(), getDtoAttribute() - .getBoolAttribute()); - } ----- -===== Notes: - -* createInstance returns AutoCloseable so the returned type needs to implement it. (You can make BarImpl implement AutoCloseable, or create a Wrapper class around the BarImpl instance that implements AutoCloseable, or even extend the BarImpl class and make it implement it.) -* You can access all the configuration attributes by means of the getter methods. -* In config-demo-impl.yang, we defined the bar-impl configuration as a container dto-attribute. The code generator creates a transfer object DtoAttribute that you can access by means of the getDtoAttribute() method, and retrieve configuration data from it. You can even add a new constructor to BarImpl that takes this transfer object, and reduces the number of arguments. - -*FooImplModule* + -We will not add any custom validation in this module. The createInstance method will look as follows: + ----- - @Override - public java.lang.AutoCloseable createInstance() { - return new FooImpl(getStrAttribute(), getIntAttribute(), getBarDependencyDependency()); - } ----- -===== Adding support for default instances - -In order to provide a default instance of module bar-impl, we need to further modify the generated code by the overriding method getDefaultModules in src/main/java/**/BarImplModuleFactory class. The body of this class is empty thus far, and it inherits the default behaviour from its parent abstract factory. Use the following code to replace the empty body: ----- -public static final ModuleIdentifier defaultInstance1Id = new ModuleIdentifier(NAME, "defaultInstance1"); - - @Override - public Set getDefaultModules(DependencyResolverFactory dependencyResolverFactory, BundleContext bundleContext) { - DependencyResolver depResolver1 = dependencyResolverFactory.createDependencyResolver(defaultInstance1Id); - BarImplModule defaultModule1 = new BarImplModule(defaultInstance1Id, depResolver1); - defaultModule1.setDtoAttribute(getDefaultConfiguration(bundleContext)); - - return Sets.newHashSet(defaultModule1); - } - - private DtoAttribute getDefaultConfiguration(BundleContext bundleContext) { - DtoAttribute defaultConfiguration = new DtoAttribute(); - - String property = bundleContext.getProperty("default.bool"); - defaultConfiguration.setBoolAttribute(property == null ? false : Boolean.parseBoolean(property)); - - property = bundleContext.getProperty("default.int1"); - defaultConfiguration.setIntAttribute(property == null ? 55 : Integer.parseInt(property)); - - property = bundleContext.getProperty("default.int2"); - defaultConfiguration.setIntAttribute2(property == null ? 0 : Integer.parseInt(property)); - - return defaultConfiguration; - } ----- -The _getDefaultModules_ method now produces an instance of the bar-impl module with the name _defaultInstance1_. (It is possible to produce multiple default instances since the return type is a Set of module instances.) Note the getDefaultConfiguration method. It provides the default configuration for default instances by trying to retrieve system properties from bundleContext (or provides hardcoded values in case the system property is not present). - -For the controller distribution, system properties can be fed by means of _config.ini_ file. - -The method _getDefaultModules_ is called automatically after a bundle containing this factory is started in the OSGi environment. Its default implementation returns an empty Set. - -The default instances approach is similar to the Activator class approach in OSGi with the advantage of default instances being managed by the configuration subsystem. This approach can either replace the Activator class approach, or be used along with it. - -*Verifying the default instances in distribution* + - -If we add the config-demo bundle to the opendaylight distribution, we can verify the presence of the default instance. The file pom.xml under the opendaylight/distribution/opendaylight folder needs to be modified by adding the config-demo dependency: ----- - - ${project.groupId} - config-demo - 0.1.1-SNAPSHOT - ----- -Now we need to rebuild the conf-demo module using mvn clean install. Then, we can build the distribution using the same mvn command under the _opendaylight/distribution/opendaylight_ folder. If we go to the _opendaylight/distribution/opendaylight/target/distribution.opendaylight-osgipackage/opendaylight_ folder, and execute run.sh, the opendaylight distribution should start. - -We can check the presence of the default instances by means of JMX using a tool such as _jvisualvm_. diff --git a/manuals/developer-guide/src/main/asciidoc/controller/config-threadpool.adoc b/manuals/developer-guide/src/main/asciidoc/controller/config-threadpool.adoc deleted file mode 100644 index 1606ff35d..000000000 --- a/manuals/developer-guide/src/main/asciidoc/controller/config-threadpool.adoc +++ /dev/null @@ -1,222 +0,0 @@ -=== Examples of Threadpool - -=== Configuration example of thread pools using yangcli-pro - -For a yangcli-pro example, see the https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Examples:User_guide[Examples User Guide]. - -=== Configuration example of thread pools using telnet -It is also possible to manipulate the configuration without the yuma cli. With just a telnet or ssh connection, it is possible to send the plain text containing netconf rpcs encoded in the xml format and achieve the same results as with yuma cli. - -This example reproduces the configuration of a threadpool and a threadfactory from the previous example using just a telnet connection. We can also use ssh connection, with the netconf rpcs sending procedure remaining the same. For detailed information about initial configuration for the controller as well as the configuration process, see the example using yuma cli. - -=== Connecting to plaintext TCP socket - -. Open a telnet connection: ----- -telnet 127.0.0.1 8383 ----- -[start=2] -. Open an ssh connection: ----- -ssh netconf@127.0.0.1 -p 1830 -s netconf ----- -The password for user netconf is : netconf, and the separator for the messages is: + ----- -]]>]]> ----- -Every message needs end with these 6 characters. - -The server sends a hello message: + ----- - - -urn:ietf:params:netconf:base:1.0 -urn:ietf:params:netconf:capability:exi:1.0 -urn:opendaylight:l2:types?module=opendaylight-l2-types&revision=2013-08-27 -urn:opendaylight:params:xml:ns:yang:controller:netty:threadgroup?module=threadgroup&revision=2013-11-07 -urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&revision=2013-10-28 -urn:opendaylight:params:xml:ns:yang:controller:threadpool?module=threadpool&revision=2013-04-09 -urn:ietf:params:netconf:capability:candidate:1.0 -urn:opendaylight:params:xml:ns:yang:controller:config?module=config&revision=2013-04-05 -urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04 -urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor?module=netty-event-executor&revision=2013-11-12 -urn:ietf:params:xml:ns:yang:rpc-context?module=rpc-context&revision=2013-06-17 -urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:impl?module=opendaylight-sal-binding-broker-impl&revision=2013-10-28 -urn:opendaylight:params:xml:ns:yang:controller:netty:timer?module=netty-timer&revision=2013-11-19 -urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2010-09-24 -urn:ietf:params:netconf:capability:rollback-on-error:1.0 -urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl?module=threadpool-impl&revision=2013-04-05 -urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2010-09-24 -urn:opendaylight:params:xml:ns:yang:controller:logback:config?module=config-logging&revision=2013-07-16 -urn:opendaylight:params:xml:ns:yang:iana?module=iana&revision=2013-08-16 -urn:opendaylight:yang:extension:yang-ext?module=yang-ext&revision=2013-07-09 -urn:opendaylight:params:xml:ns:yang:controller:netty?module=netty&revision=2013-11-19 -http://netconfcentral.org/ns/toaster?module=toaster&revision=2009-11-20 -urn:opendaylight:params:xml:ns:yang:ieee754?module=ieee754&revision=2013-08-19 -urn:opendaylight:params:xml:ns:yang:nps-concepts?module=nps-concepts&revision=2013-09-30 - - -4 - -]]>]]> ----- -[start=3] -. As the client, you must respond with a hello message: ----- - - - urn:ietf:params:netconf:base:1.0 - - -]]>]]> ----- -Although there is no response to the hello message, the session is already established. - -=== Configuring threadfactory - -. The following is the Xml equivalent to *get-config source=running*: + ----- - - - - - - - -]]>]]> ----- -The response containing the current configuration: + ----- - - - - - prefix:binding-broker-impl-singleton - binding-broker-singleton - - - - - prefix:binding-broker-osgi-registry - - ref_binding-broker-singleton - /modules/module[type='binding-broker-impl-singleton'][name='binding-broker-singleton'] - - - - -]]>]]> ----- -[start=2] -. To create an instance of threadfactory-naming with the name threadfactory-bgp, and the attribute name-prefix set to bgp, send the message: ----- - - - - - - merge - - - - threadfactory-bgp - th-java:threadfactory-naming - bgp - - - - -]]>]]> ----- -[start=3] -. To commit the threadfactory instance, send a commit message: ----- - - -]]>]]> ----- -The NETCONF endpoint should respond with ok to edit-config, as well as the commit message: + - ----- - - -]]>]]> ----- -[start=4] -. The response to the get-config message (the same as the first message sent in this example) should contain the commited instance of threadfactory-naming: ----- - - - - - prefix:binding-broker-impl-singleton - binding-broker-singleton - - - - prefix:threadfactory-naming - threadfactory-bgp - bgp - - - - - - prefix:threadfactory - - ref_threadfactory-bgp - /modules/module[type='threadfactory-naming'][name='threadfactory-bgp'] - - - - prefix:binding-broker-osgi-registry - - ref_binding-broker-singleton - /modules/module[type='binding-broker-impl-singleton'][name='binding-broker-singleton'] - - - - -]]>]]> ----- -=== Configuring fixed threadpool - -* To create an instance of *threadpool-fixed* , with the same configuration and the same dependency as before, send the following message: - ----- - - - - - - merge - - - - bgp-threadpool - th-java:threadpool-fixed - 100 - - th:threadfactory - ref_th-bgp - - - - - - - prefix:threadfactory - - ref_th-bgp - /modules/module[type='threadfactory-naming'][name='threadfactory-bgp'] - - - - - -]]>]]> ----- -Notice the _services_ tag. If an instance is to be referenced as a dependency by another module, it needs to be placed under this tag as a service instance with a unique reference name. Tag _provider_ points to a unique instance that is already present in the config subsystem, or is created within the current edit-config operation. -The tag _name_ contains the reference name that can be referenced by other modules to create a dependency. In this case, a new instance of threadpool uses this reference in its configuration under the _threadFactory_ tag). - -You should get an ok response again, and the configuration subsystem will inject the dependency into the threadpool. Now you can commit the configuration (ok response once more) and the process is finished. The config subsystem is now in the same state as it was at the end of the previous example. diff --git a/manuals/developer-guide/src/main/asciidoc/controller/config-user-yuma.adoc b/manuals/developer-guide/src/main/asciidoc/controller/config-user-yuma.adoc deleted file mode 100644 index e774139e2..000000000 --- a/manuals/developer-guide/src/main/asciidoc/controller/config-user-yuma.adoc +++ /dev/null @@ -1,448 +0,0 @@ -// https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Examples:User_guide -// FIXME: This should be updated and probably part of user / operations guide -=== Configuration examples user guide -==== Configuring thread pools with yangcli-pro -Requirements: yangcli-pro version 13.04-9.2 or later + - -===== Connecting to plaintext TCP socket and ssh -Currently SSH is exposed by the controller. The network interface and port are configured in configuration/config.ini . The current configuration of netconf is as follows: + ----- -# Netconf startup configuration -#netconf.tcp.address=127.0.0.l -#netconf.tcp.port=8383 - -netconf.ssh.address=0.0.0.0 -netconf.ssh.port=1830 ----- -To connect the yangcli-pro client, use the following syntax: + ----- -yangcli-pro --user=admin --password=admin --transport=ssh --ncport=1830 --server=localhost ----- -If the plaintext TCP port is not commented out, one can use the following: + ----- -yangcli-pro --user=a --password=a --transport=tcp --ncport=8383 --server=localhost ----- -Authentication in this case is ignored. - -For better debugging, include following arguments: + ----- ---log=/tmp/yuma.log --log-level=debug4 --log-console ----- - -NOTE: When the log file is set, the output will not appear on stdout. - -===== Configuring threadfactory -The threadfactory is a service interface that can be plugged into threadpools, defined in config-threadpool-api (see the https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blob;f=opendaylight/config/threadpool-config-api/src/main/yang/threadpool.yang;h=8f3064822be319dfee6fd7c7061c8bee14db268f;hb=refs/heads/master[yang file]. -The implementation to be used is called threadfactory-naming. This implementation will set a name for each thread created using a configurable prefix and auto incremented index. See the https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blob;f=opendaylight/config/threadpool-config-impl/src/main/yang/threadpool-impl.yang;h=a2366f285a0c0b8682b1093f18fb5ee184c9cde3;hb=refs/heads/master[Yang file]. - -. Launch yangcli-pro and connect to the server. -. Enter *get-config source=running* to see the current configuration. + -Example output: + ----- -rpc-reply { - data { - modules { - module binding-broker-singleton { - type binding-impl:binding-broker-impl-singleton - name binding-broker-singleton - } - } - services { - service md-sal-binding:binding-broker-osgi-registry { - type md-sal-binding:binding-broker-osgi-registry - instance ref_binding-broker-singleton { - name ref_binding-broker-singleton - provider /modules/module[type='binding-broker-impl-singleton'][name='binding-broker-singleton'] - } - } - } - } -} ----- -[start=3] -. Enter the merge /modules/module. -. At the prompt, enter the string value for the leaf . This is the name of the config module. Enter threadfactory-bgp. -. Set the identityref for the leaf . Press Tab to see a list of available module names. Enter threadfactory-naming. -. At the prompt, choose the case statement. Example output: ----- - 1: case netty-threadgroup-fixed: - leaf thread-count - 2: case netty-hashed-wheel-timer: - leaf tick-duration - leaf ticks-per-wheel - container thread-factory - 3: case async-eventbus: - container threadpool - 4: case threadfactory-naming: - leaf name-prefix - 5: case threadpool-fixed: - leaf max-thread-count - container threadFactory - 6: case threadpool-flexible: - leaf max-thread-count - leaf minThreadCount - leaf keepAliveMillis - container threadFactory - 7: case threadpool-scheduled: - leaf max-thread-count - container threadFactory - 8: case logback: - list file-appenders - list rolling-appenders - list console-appenders - list loggers ----- -In this case, we chose 4. + -[start=7] -. Next fill in the string value for the leaf . Enter bgp. -: (You should get an OK response from the server.) -[start=8] -. Optionally issue get-config source=candidate to verify the change. -. Issue commit. -. Issue get-config source=running. Example output: + ----- -rpc-reply { - data { - modules { - module binding-broker-singleton { - type binding-impl:binding-broker-impl-singleton - name binding-broker-singleton - } - module threadfactory-bgp { - type th-java:threadfactory-naming - name threadfactory-bgp - name-prefix bgp - } - } - services { - service th:threadfactory { - type th:threadfactory - instance ref_threadfactory-bgp { - name ref_threadfactory-bgp - provider /modules/module[type='threadfactory-naming'][name='threadfactory-bgp'] - } - } - service md-sal-binding:binding-broker-osgi-registry { - type md-sal-binding:binding-broker-osgi-registry - instance ref_binding-broker-singleton { - name ref_binding-broker-singleton - provider /modules/module[type='binding-broker-impl-singleton'][name='binding-broker-singleton'] - } - } - } - } -} ----- -==== Configuring fixed threadpool - -Service interface threadpool is defined in the config-threadpool-api. The implementation used is called threadpool-fixed that is defined in config-threadpool-impl. This implementation creates a threadpool of fixed size. There are two mandatory attributes: size and dependency on a threadfactory. - -. Issue get-config source=running. As you can see in the last step of configuring threadfactory, /services/service, the node associated with it has instance name ref_threadfactory-bgp. -. Issue merge /modules/module. -. Enter the name bgp-threadpool. -. Enter the type threadpool. -. Select the appropriate case statement. -. Enter the value for leaf : 100. -. Enter the threadfactory for attribute threadfactory/type. This is with reference to /services/service/type, in other words, the service interface. -. Enter ref_threadfactory-bgp. -Server response must be an OK message. -[start=9] -. Issue commit. -. Issue get-config source=running. -Example output: + ----- -rpc-reply { - data { - modules { - module binding-broker-singleton { - type binding-impl:binding-broker-impl-singleton - name binding-broker-singleton - } - module bgp-threadpool { - type th-java:threadpool-fixed - name bgp-threadpool - threadFactory { - type th:threadfactory - name ref_threadfactory-bgp - } - max-thread-count 100 - } - module threadfactory-bgp { - type th-java:threadfactory-naming - name threadfactory-bgp - name-prefix bgp - } - } - services { - service th:threadpool { - type th:threadpool - instance ref_bgp-threadpool { - name ref_bgp-threadpool - provider /modules/module[type='threadpool-fixed'][name='bgp-threadpool'] - } - } - service th:threadfactory { - type th:threadfactory - instance ref_threadfactory-bgp { - name ref_threadfactory-bgp - provider /modules/module[type='threadfactory-naming'][name='threadfactory-bgp'] - } - } - service md-sal-binding:binding-broker-osgi-registry { - type md-sal-binding:binding-broker-osgi-registry - instance ref_binding-broker-singleton { - name ref_binding-broker-singleton - provider /modules/module[type='binding-broker-impl-singleton'][name='binding-broker-singleton'] - } - } - } - } -} ----- -To see the actual netconf messages, use the logging arguments described at the top of this page. To validate that a threadpool has been created, a tool like VisualVM can be used. - -==== Logback configuration - Yuma -This approach to configure logback will utilize a 3rd party cli netconf client from Yuma. We will modify existing console appender in logback and then call reset rpc on logback to clear its status list. - -For initial configuration of the controller and startup parameters for yuma, see the threadpool example: https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Examples:Threadpool[Threadpool configuration using Yuma]. - -Start the controller and yuma cli client as in the previous example. - -There is no need to initialize the configuration module wrapping logback manually, since it creates a default instance. Therefore you should see the output containing logback configuration after the execution of get-config source=running command in yuma: ----- -rpc-reply { - data { - modules { - module singleton { - type logging:logback - name singleton - console-appenders { - threshold-filter ERROR - name STDOUT - encoder-pattern '%date{"yyyy-MM-dd HH:mm:ss.SSS z"} [%thread] %-5level %logger{36} - %msg%n' - } - file-appenders { - append true - file-name logs/audit.log - name audit-file - encoder-pattern '%date{"yyyy-MM-dd HH:mm:ss.SSS z"} %msg %n' - } - loggers { - level WARN - logger-name org.opendaylight.controller.logging.bridge - } - loggers { - level INFO - logger-name audit - appenders audit-file - } - loggers { - level ERROR - logger-name ROOT - appenders STDOUT - appenders opendaylight.log - } - loggers { - level INFO - logger-name org.opendaylight - } - loggers { - level WARN - logger-name io.netty - } - rolling-appenders { - append true - max-file-size 10MB - file-name logs/opendaylight.log - name opendaylight.log - file-name-pattern logs/opendaylight.%d.log.zip - encoder-pattern '%date{"yyyy-MM-dd HH:mm:ss.SSS z"} [%thread] %-5level %logger{35} - %msg%n' - clean-history-on-start false - max-history 1 - rolling-policy-type TimeBasedRollingPolicy - } - } - module binding-broker-singleton { - type binding-impl:binding-broker-impl-singleton - name binding-broker-singleton - } - } - services { - service md-sal-binding:binding-broker-osgi-registry { - type md-sal-binding:binding-broker-osgi-registry - instance ref_binding-broker-singleton { - name ref_binding-broker-singleton - provider /modules/module[type='binding-broker-impl-singleton'][name='binding-broker-singleton'] - } - } - } - } -} ----- - -===== Modifying existing console appender in logback -. Start edit-config with merge option: ----- -merge /modules/module ----- -[start=2] -. For Name of the module, enter *singleton*. -. For Type, enter *logback*. -. Pick the corresponding case statement with the name logback. -We do not want to modify file-appenders, rolling-appenders and loggers lists, so the answer to questions from yuma is N (for no): ----- -Filling optional case /modules/module/configuration/logback: -Add optional list 'file-appenders'? -Enter Y for yes, N for no, or C to cancel: [default: Y] ----- -[start=5] -. As we want to modify console-appenders, the answer to the question from Yuma is Y: ----- -Filling optional case /modules/module/configuration/logback: -Add optional list 'console-appenders'? -Enter Y for yes, N for no, or C to cancel: [default: Y] ----- -[start=6] -. This will start a new configuration process for console appender and we will fill following values: - -* %date{"yyyy-MM-dd HH:mm:ss.SSS z"} %msg %n -* INFO -* STDOUT -[start=7] -. Answer N to the next question. ----- -Add another list? -Enter Y for yes, N for no, or C to cancel: [default: N] ----- -Notice that we changed the level for threshold-filter for STDOUT console appender from ERROR to INFO. Now issue a commit command to commit the changed configuration, and the response from get-config source=running command should look like this: ----- -rpc-reply { - data { - modules { - module singleton { - type logging:logback - name singleton - console-appenders { - threshold-filter INFO - name STDOUT - encoder-pattern '%date{"yyyy-MM-dd HH:mm:ss.SSS z"} [%thread] %-5level %logger{36} - %msg%n' - } - file-appenders { - append true - file-name logs/audit.log - name audit-file - encoder-pattern '%date{"yyyy-MM-dd HH:mm:ss.SSS z"} %msg %n' - } - loggers { - level WARN - logger-name org.opendaylight.controller.logging.bridge - } - loggers { - level INFO - logger-name audit - appenders audit-file - } - loggers { - level ERROR - logger-name ROOT - appenders STDOUT - appenders opendaylight.log - } - loggers { - level INFO - logger-name org.opendaylight - } - loggers { - level WARN - logger-name io.netty - } - rolling-appenders { - append true - max-file-size 10MB - file-name logs/opendaylight.log - name opendaylight.log - file-name-pattern logs/opendaylight.%d.log.zip - encoder-pattern '%date{"yyyy-MM-dd HH:mm:ss.SSS z"} [%thread] %-5level %logger{35} - %msg%n' - clean-history-on-start false - max-history 1 - rolling-policy-type TimeBasedRollingPolicy - } - } - module binding-broker-singleton { - type binding-impl:binding-broker-impl-singleton - name binding-broker-singleton - } - } - services { - service md-sal-binding:binding-broker-osgi-registry { - type md-sal-binding:binding-broker-osgi-registry - instance ref_binding-broker-singleton { - name ref_binding-broker-singleton - provider /modules/module[type='binding-broker-impl-singleton'][name='binding-broker-singleton'] - } - } - } - } -} ----- -==== Invoking RPCs -*Invoking Reset RPC on logback* + -The configuration module for logback exposes some information about its current state(list of logback status messages). This information can be accessed using get netconf operation or get command from yuma. Example response after issuing get command in yuma: ----- -rpc-reply { - data { - modules { - module singleton { - type logging:logback - name singleton - status { - message 'Found resource [configuration/logback.xml] at -[file:/.../controller/opendaylight/distribution/opendaylight/target/distribution.opendaylight- -osgipackage/opendaylight/configuration/logback.xml]' - level INFO - date 2479534352 - } - status { - message 'debug attribute not set' - level INFO - date 2479534441 - } - status { - message 'Will scan for changes in -[[/.../controller/opendaylight/distribution/opendaylight/target/distribution.opendaylight- -osgipackage/opendaylight/configuration/logback.xml]] -every 60 seconds.' - level INFO - date 2479534448 - } - status { - message 'Adding ReconfigureOnChangeFilter as a turbo filter' - level INFO - date 2479534448 - } - ... ----- -Logback also exposes an rpc called reset that wipes out the list of logback status messages and to invoke an rpc with name reset on module named singleton of type logback, following command needs to be issued in yuma: ----- -reset context-instance="/modules/module[type='logback' and name='singleton']" ----- -After an ok response, issuing get command should produce response with empty logback status message list: ----- -rpc-reply { - data { - modules { - module singleton { - type logging:logback - name singleton - } - } - } -} ----- -This response confirms successful execution of the reset rpc on logback. - -*Invoking shutdown RPC* + -This command entered in yuma will shut down the server. If all bundles do not stop correctly within 10 seconds, it will force the process to exit. ----- -shutdown context-instance="/modules/module[type='shutdown' and name='shutdown']",input-secret="",max-wait-time="10000",reason="reason" ----- diff --git a/manuals/developer-guide/src/main/asciidoc/controller/controller.adoc b/manuals/developer-guide/src/main/asciidoc/controller/controller.adoc deleted file mode 100644 index 8b6ed5d1a..000000000 --- a/manuals/developer-guide/src/main/asciidoc/controller/controller.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== Controller - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/controller.html diff --git a/manuals/developer-guide/src/main/asciidoc/controller/md-sal-faq.adoc b/manuals/developer-guide/src/main/asciidoc/controller/md-sal-faq.adoc deleted file mode 100644 index 8143dbf66..000000000 --- a/manuals/developer-guide/src/main/asciidoc/controller/md-sal-faq.adoc +++ /dev/null @@ -1,269 +0,0 @@ -=== OpenDaylight Controller: MD-SAL FAQs - -*Q-1: What is the overall MD-SAL architecture?* - -* **What is the overall architecture, components, and functionality?** -* **Who supplies which components, and how are the components plumbed?** - -*A-1:* The overall Model-Driven SAL (MD-SAL) architecture did not really change -from the API-Driven SAL (AD-SAL). As with the AD-SAL, plugins can be data -providers, or data consumers, or both (although the AD-SAL did not explicitly -name them as such). Just like the AD-SAL, the MD-SAL connects data consumers -to appropriate data providers and (optionally) facilitates data adaptation -between them. - -Now, in the AD-SAL, the SAL APIs request routing between consumers and -providers, and data adaptations are all statically defined at compile or -build time. In the MD-SAL, the SAL APIs and request routing between consumers -and providers are defined from models, and data adaptations are provided by -'internal' adaptation plugins. The API code is generated from models when -a plugin is compiled. When the plugin OSGI bundle is loaded into the controller, -the API code is loaded into the controller along with the rest of the plugin -containing the model. - -.AD-SAL and MD-SAL -image::MD-SAL.png[] - -The AD-SAL provides request routing (selects an SB plugin based on service type) -and optionally provides service adaptation, if an NB (Service, abstract) API -is different from its corresponding SB (protocol) API. For example, in the above -figure, the AD-SAL routes requests from NB-Plugin 1 to SB Plugins 1 and 2. Note -that the plugin SB and NB APIs in this example are essentially the same -(although both of them need to be defined). Request routing is based on plugin -type: the SAL knows which node instance is served by which plugin. When an NB -Plugin requests an operation on a given node, the request is routed to the -appropriate plugin which then routes the request to the appropriate node. -The AD-SAL can also provide service abstractions and adaptations. For example, -in the above figure, NB Plugin 2 is using an abstract API to access the services -provided by SB Plugins 1 and 2. The translation between the SB Plugin API and -the abstract NB API is done in the Abstraction module in the AD-SAL. - -The MD-SAL provides request routing and the infrastructure to support service -adaptation. However, it does not provide service adaptation itself: service -adaptation is provided by plugins. From the point of view of MD-SAL, -the Adaptation Plugin is a regular plugin. It provides data to the SAL, -and consumes data from the SAL through APIs generated from models. -An Adaptation Plugin basically performs model-to-model translations -between two APIs. Request Routing in the MD-SAL is done on both protocol type -and node instances, since node instance data is exported from the plugin into -the SAL (the model data contains routing information). - -The simplest MD-SAL APIs generated from models (RPCs and Notifications, both -supported in the yang modeling language) are functionally equivalent to AD-SAL -function call APIs. Additionally, the MD-SAL can store data for models defined -by plugins. Provider and consumer plugins can exchange data through the MD-SAL -storage. Data in the MD-SAL is accessed through getter and setter APIs generated -from models. Note that this is in contrast to the AD-SAL, which is stateless. - -Note that in the above figure, both NB AD-SAL Plugins provide REST APIs to -controller client applications. - -The functionality provided by the MD-SAL is basically to facilitate the plumbing -between providers and consumers. A provider or a consumer can register itself -with the MD-SAL. A consumer can find a provider that it is interested in. -A provider can generate notifications; a consumer can receive notifications -and issue RPCs to get data from providers. A provider can insert data into SAL -storage; a consumer can read data from SAL storage. - -Note that the structure of SAL APIs is different in the MD-SAL from that in the -AD-SAL. The AD-SAL typically has both NB and SB APIs even for functions or -services that are mapped 1:1 between SB Plugins and NB Plugins. For example, -in the current AD-SAL implementation of the OpenFlow Plugin and applications, -the NB SAL APIs used by OF applications are mapped 1:1 onto SB OF Plugin APIs. -The MD-SAL allows both the NB plugins and SB plugins to use the same -API generated from a model. One plugin becomes an API (service) provider; -the other becomes an API (service) Consumer. This eliminates the need to define -two different APIs and to provide three different implementations even for cases -where APIs are mapped to each other 1:1. The MD SAL provides instance-based -request routing between multiple provider plugins. - -*Q-2: What functionality does the MD-SAL assume? For example, does the SAL -assume that the network model is a part of the SAL?* - -*A-2:* The MD-SAL does not assume any model. All models are provided by plugins. -The MD-SAL only provides the infrastructure and the plumbing for the plugins. - - -*Q-3: What is the "day in the life" of an MD-SAL plugin?* - - -*A-3:* All plugins (protocol, application, adaptation, and others) have the same -lifecycle. The life of a plugin has two distinct phases: design and operation. + -During the design phase, the plugin designer performs the following actions: + - -* The designer decides which data will be consumed by the plugin, and imports -the SAL APIs generated from the API provider’s models. Note that the topology -model is just one possible data type that may be consumed by a plugin. The list -of currently available data models and their APIs can be found in -YANG_Tools:Available_Models. -* The designer decides which data and how it will be provided by the plugin, -and designs the data model for the provided data. The data model -(expressed in yang) is then run through the -https://wiki.opendaylight.org/view/YANG_Tools:Available_Models[YANG Tools], -which generate the SAL APIs for the model. -* The implementations for the generated consumer and provider APIs, along with - other plugin features and functionality, are developed. The resulting code - is packaged in a “plugin” OSGI bundle. Note that a developer may package the - code of a subsystem in multiple plugins or applications that may communicate - with each other through the SAL. -* The generated APIs and a set of helper classes are also built and packaged - in an “API” OSGI bundle. - -The plugin development process is shown in the following figure. + - -.Plugin development process -image::plugin-dev-process.png[] - -When the OSGI bundle of a plugin is loaded into the controller and activated, -the operation phase begins. The plugin operation is probably best explained -with a few examples describing the operation of the OF Protocol plugin and -OF applications, such as the Flow Programmer Service, the ARP Handler, -or the Topology Manager. The following figure shows a scenario where a -“Flow Deleted” notification from a switch arrives at the controller. - -.Flow deleted at controller -image::flow-deleted-at-controller.png[] - -The scenario is as follows: + - -. The Flow Programmer Service registers with the MD SAL for the `Flow Deleted' - notification. This is done when the Controller and its plugins or applications - are started. -. A `Flow Deleted' OF packet arrives at the controller. The OF Library receives -the packet on the TCP/TLS connection to the sending switch, and passes it to the -OF Plugin. -. The OF Plugin parses the packet, and uses the parsed data to create a -`Flow Deleted' SAL notification. The notification is actually an immutable -`Flow Deleted' Data Transfer Object (DTO) that is created or populated by means -of methods from the model-generated OF Plugin API. -. The OF Plugin sends the `Flow Deleted' SAL notification (containing the - notification DTO) into the SAL. The SAL routes the notification to registered - consumers, in this case, the Flow Programmer Service. -. The Flow Programmer Service receives the notification containing the - notification DTO. -. The Flow Programmer Service uses methods from the API of the model-generated - OF Plugin to get data from the immutable notification DTO received in Step 5. - The processing is the same as in the AD-SAL. - -Note that other packet-in scenarios, where a switch punts a packet to -the controller, such as an ARP or an LLDP packet, are similar. Interested -applications register for the respective notifications. The OF plugin generates -the notification from received OF packets, and sends them to the SAL. -The SAL routes the notifications to the registered recipients. + -The following figure shows a scenario where an external application adds a -flow by means of the NB REST API of the controller. - -.External app adds flow -image::md-sal-faqs-add_flow.png[] - -The scenario is as follows: + - -. Registrations are performed when the Controller and its plugins - or applications are started. - -.. The Flow Programmer Service registers with the MD SAL for Flow configuration -data notifications. -.. The OF Plugin registers (among others) the ‘AddFlow’ RPC implementation with - the SAL. -Note that the RPC is defined in the OF Plugin model, and the API is generated -during build time. + -[start=2] -. A client application requests a flow add through the REST API of the -Controller. (Note that in the AD-SAL, there is a dedicated NB REST API on top -of the Flow Programming Service. The MD-SAL provides a common infrastructure -where data and functions defined in models can be accessed by means of a common -REST API. For more information, see http://datatracker.ietf.org/doc/draft-bierman-netconf-restconf/). The client application provides all parameters for the flow in the REST call. -. Data from the ‘Add Flow’ request is deserialized, and a new flow is created - in the Flow Service configuration data tree. (Note that in this example - the configuration and operational data trees are separated; this may be - different for other services). Note also that the REST call returns success - to the caller as soon as the flow data is written to the configuration data tree. -. Since the Flow Programmer Service is registered to receive notifications - for data changes in the Flow Service data tree, the MD-SAL generates a - ‘data changed’ notification to the Flow Programmer Service. -. The Flow Programmer Service reads the newly added flow, and performs - a flow add operation (which is basically the same as in the AD-SAL). -. At some point during the flow addition operation, the Flow Programmer Service - needs to tell the OF Plugin to add the flow in the appropriate switch. - The Flow Programmer Service uses the OF Plugin generated API to create - the RPC input parameter DTO for the “AddFlow” RPC of the OF Plugin. -. The Flow Programmer Service gets the service instance (actually, a proxy), - and invokes the “AddFlow” RPC on the service. The MD-SAL will route - the request to the appropriate OF Plugin (which implements the requested RPC). -. The `AddFlow' RPC request is routed to the OF Plugin, and the implementation - method of the “AddFlow” RPC is invoked. -. The `AddFlow' RPC implementation uses the OF Plugin API to read values from - the DTO of the RPC input parameter. (Note that the implementation will use - the getter methods of the DTO generated from the yang model of the RPC to read - the values from the received DTO.) -. The `AddFlow' RPC is further processed (pretty much the same as in the AD-SAL) - and at some point, the corresponding flowmod is sent to the corresponding switch. - -*Q-4: Is there a document that describes how code is generated from the models -for the MD-SAL?* - -*A-4:* https://wiki.opendaylight.org/view/YANG_Tools:YANG_to_Java_Mapping[Yangtools] -documents the Yang to Java generation, including examples of how the yang -constructs are mapped into Java classes. You can write unit tests against -the generated code. You will have to write implementations of the generated -RPC interfaces. The generated code is just Java, and it debugs just like Java. - -If you want to play with generating Java from Yang there is a maven archetype -to help you get going: https://wiki.opendaylight.org/view/Maven_Archetypes:odl-model-project[Maven Archetypes: ODL Model Project]. + -Or, you can try creating a project in Eclipse as explained at: http://sdntutorials.com/yang-to-java-conversion-how-to-create-maven-project-in-eclipse/[YANG to Java conversion: How to create Maven project in Eclipse]. - -*Q-5: The code generation tools mention 'producers' and consumers'. -How are these related to 'southbound' and 'northbound SAL plugins?* - -*A-5:* The difference between southbound and northbound plugins is that -the southbound plugins talk protocols to network nodes, and northbound -plugins talk application APIs to the controller applications. As far -as the SAL is concerned, there is really no north or south. -The SAL is basically a data exchange and adaptation mechanism between plugins. -The plugin SAL roles (consumer or producer) are defined with respect to -the data being moved around or stored by the SAL. A producer implements an API, -and provides the data of the API: a consumer uses the API, and consumes the data -of the API. + -While 'northbound' and 'southbound' provide a network engineer's view of the SAL, - 'consumer' and 'producer' provide a software engineer's view of the SAL, and is - shown in the following figure: - -.SAL consumer and producer view - -image::mdsal-sal-sw-eng.png[] - -*Q-6: Where can I find models that have already been defined in OpenDaylight?* - -*A-6:* The list of models that have been defined for the SAL and in various -plugins can be found in https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Model_Reference[MD-SAL Model Reference]. - -*Q-7: How do I migrate my existing plugins and services to MD-SAL?* - -*A-7:* The migration guide can be found in the -https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Application_Migration_Guide[MD-SAL Application Migration Guide]. - -*Q-8: Where can I find SAL example code?* - -*A-8:* The toaster sample provides a simple yet complete example of a model, -a service provider (toaster), and a service consumer. It provides the model -of a programmable toaster, a sample consumer application that uses -MD-SAL APIs; a sample southbound plugin (a service provider) that implements -toaster; and a unit test suite. - -The toaster example is in _controller.git_ under _opendaylight/md-sal/samples_. - -*Q-9: Where is the REST API code for the example?* - -*A-9:* The REST APIs are derived from models. You do not have to write any code -for it. The controller will implement the -http://datatracker.ietf.org/doc/draft-bierman-netconf-restconf/[RESTCONF protocol] -which defines access to yang-formatted data through REST. Basically, all you -need to do is define your service in a model, and expose that model to the SAL. -REST access to your modeled data will then be provided by the SAL infrastructure. -However, if you want to, you can create your own REST API (for example, to be - compliant with an existing API). - -*Q-10: How can one use RESTCONF to access the MD-SAL datastore?* - -*A-10:* For information on accessing the MD-SAL datastore, see -https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Restconf[MD-SAL RESTCONF]. diff --git a/manuals/developer-guide/src/main/asciidoc/controller/netconf/odl-netconf-dev.adoc b/manuals/developer-guide/src/main/asciidoc/controller/netconf/odl-netconf-dev.adoc deleted file mode 100644 index 4da211e48..000000000 --- a/manuals/developer-guide/src/main/asciidoc/controller/netconf/odl-netconf-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== NETCONF Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/netconf-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/core/APIdesignPrinciples_SB.adoc b/manuals/developer-guide/src/main/asciidoc/core/APIdesignPrinciples_SB.adoc deleted file mode 100644 index 82cb167e8..000000000 --- a/manuals/developer-guide/src/main/asciidoc/core/APIdesignPrinciples_SB.adoc +++ /dev/null @@ -1,132 +0,0 @@ -== API design principles and patterns contributed by southbound plugins - -This section is intended to define common design patterns supporting extensions contributed by southbound plugins, which could be used in the SAL or or used in modelling any abstract extensible APIs. - -NOTE: Wire protocol specific information (serialization, serialization constants , TLV identifiers, bit masks, field ordering) should not be part of the SAL. Also, APIs (interfaces, classes) should support extensibility using subclassing or other extension patterns. This allows for abstract APIs and also for concrete APIs to coexist in the SAL and to use common infrastructure. - -=== Extensible enumeration pattern - -This pattern is suitable for modelling or defining APIs for the enumeration of immutable data or types, which for example could represent ether type, protocol type, and others. The workflow for API definition is simple: - -. Define a simple interface with the needed functionality. - -. Declare an enum implementing the interface where the enum constants represent the known values. - -. (optional) Include a factory method mapping from names to objects implementing the interface. - -For more information, see the following links: - -** http://jtechies.blogspot.com/2012/07/item-34-emulate-extensible-enums-with.html - -** http://blogs.oracle.com/darcy/entry/enums_and_mixins - -=== Type-value pairs pattern - -This pattern is suitable for modelling or defining APIs for extensible set of fields, where the values could be of different types. The requirements for type-value pairs are: Extensible and Type safety. - -==== Common antipatterns - -This pattern is to replace the following constructs: - - -* Simple untyped approach to properties (pros: extensible, cons: does not provide semantics and type safety): - -[literal] -// Ommited for clarity... -HashMap properties; - - -* More refined approach using the enumeration to define a set of supported field types (pros: provides semantics, cons: not extensible). - -[literal] -enum Type { - TYPE1(String.class), - TYPE2(Boolean.class), - private Class valueType; // This line is optional. - // ommited for clarity... -} -class Field { - Type type; - Object value; - // ommited for clarity... -} - - -=== Actual pattern - -We can model this by using the abstract class and the generics to define value type and set of subclasses representing various types of fields. The instances of this class represents actual type-value pair, where class represents type and value is represented by object in the instance. - -[literal] -abstract class Field { - private V value; - public Field(V value) { - this.value = value; - } - ... -} - class Type1Field extends Field { - public Type1Field(String value){super(value);} -} - class Type2Field extends Field { - public Type2Field(Boolean value){super(value);} -} - -The abstract class does not have to only define fields or values, but could also define additional methods (concrete or abstract) which could provide additional semantic about the field type. This example shows only one value field, but it is possible to have multiple fields. It is possible to model common part of API also as an interface and leave all the implementation to the super types. Map, which should store one instance of the field is: Map>,Field>. It is possible to provide simpler facade on top of this map. - -=== Extension interface pattern - -The following Java design allows an object to be extended without changing its interface to clients. The object can implement additional extension interfaces. Clients can ask the object for extension interfaces that it implements. - - -In the interface present in the SAL models general approach or abstraction, the client code (applications) could ask for extension interface (which could be used to model protocol specific functionality, interfaces, data) by querying for the extension. Extension is identified by Java interface (the client code using extension must be compiled against this interface). - - -This pattern could be also used as an replacement for the field pattern. We have defined a set of fields provided by extension as separate class or interface, the values could be queried by using the extension class. -The strong point of this pattern is that the client code needs to be aware of the extension and its contract (be compiled against the base interface and also extension) in order to use the extension. The code which was not compiled against extension is not affected by introducing new extensions. - -*Synopsis: Original pattern* - -[literal] -public interface A { - // Ommited for clarity... - T getExtension(Class extensionType) -} - -*Synopsis: Updated pattern* -[literal] -public interface Extensible

{ - // Ommited for clarity... - > T getExtension(Class extensionType) -} -public interface Extension { -} - -Where: - -* Extensible is interface which is to be implemented by classes which provides extension support - -* P - generic argument, usually interface / class which implements - -* Extension is marker interface (for type-safety reasons) which marks interfaces / classes which are extensions - -* T - generic argument, pointing to the class / interface to which this extension is associated. - -=== Usage example - -[literal] -ublic class Node extends Extensible { - // contents ommited - // the instatiated version of extension interface isExtension method is - @Override - T getExtension(Class extensionType) { - // contents ommited - } -} -public class OpenflowNode extends Extension { - // contents ommited -} -Node node = provider.getNode(); // sample call returning node -OpenflowNode ofNode = node.getExtension(OpenflowNode.class); -if(ofNode != null) { - // do openflow specific stuff -} diff --git a/manuals/developer-guide/src/main/asciidoc/core/ODL-controller-library-descriptions.adoc b/manuals/developer-guide/src/main/asciidoc/core/ODL-controller-library-descriptions.adoc deleted file mode 100644 index b56b23776..000000000 --- a/manuals/developer-guide/src/main/asciidoc/core/ODL-controller-library-descriptions.adoc +++ /dev/null @@ -1,123 +0,0 @@ -== OpenDaylight controller library descriptions - -Shared functions and methods are compiled and bundled into libraries. This page describes client libraries. - -=== C client library - -The C module generates the source code for the ANSI-C-compatible data structures and (de)serialization functions that can be used in conjunction with http://xmlsoft.org/[libxml2] to (de)serialize the REST resources as they are represented as XML data. - - -The generated C source code depends on the http://xmlsoft.org/html/libxml-xmlreader.html[XML Reader API] and the http://xmlsoft.org/html/libxml-xmlwriter.html[XML Writer API] as well as the , , and C standard libraries. - - -=== REST XML example - -[literal] - #include - //... - xmlTextReaderPtr reader = ...; //set up the reader to the url. - full_ns0_edgeProps *response_element = ...; - response_element = xml_read_full_ns0_edgeProps(reader); - //handle the response as needed... - //free the full_ns0_edgeProps - free_full_ns0_edgeProps(response_element); - - -=== .NET client library - -The .NET client-side library defines the classes that can be (de)serialized to/from XML. This is useful for accessing the REST endpoints that are published by this application. - -==== REST example - -[literal] - //read a resource from a REST url - Uri uri = new Uri(...); - XmlSerializer s = new XmlSerializer( - typeof( EdgeProps ) - ); - //Create the request object - WebRequest req = WebRequest.Create(uri); - WebResponse resp = req.GetResponse(); - Stream stream = resp.GetResponseStream(); - TextReader r = new StreamReader( stream ); - EdgeProps order = (EdgeProps) s.Deserialize( r ); - //handle the result as needed... - -This bundle contains C# source code. - -=== Java client library - -The Java client-side library is used to access the Web service API for this application. -The JAX-WS client-side library is used to provide the set of Java objects that can be serialized to/from XML using https://jaxb.dev.java.net/[JAXB]. This is useful for accessing the REST endpoints that are published by this application. - - -==== REST example (Raw JAXB) - -[literal] - java.net.URL url = new java.net.URL(baseURL + "/{containerName}"); - JAXBContext context = JAXBContext.newInstance( EdgeProps.class ); - java.net.URLConnection connection = url.openConnection(); - connection.connect(); - Unmarshaller unmarshaller = context.createUnmarshaller(); - EdgeProps result = (EdgeProps) unmarshaller.unmarshal( connection.getInputStream() ); - //handle the result as needed... - - -==== REST example (Jersey client) - -[literal] - -com.sun.jersey.api.client.Client client = com.sun.jersey.api.client.Client.create(); -EdgeProps result = client.resource(baseUrl + "/{containerName}") - .get(EdgeProps.class); -//handle the result as needed... - - -=== Java JSON client library - -The Java client-side library is used to provide the set of Java objects that can be serialized to/from JSON using Jackson. This is useful for accessing the JSON REST endpoints that are published by this application. - -==== REST example (Raw Jackson) - - -[literal] - java.net.URL url = new java.net.URL(baseURL + "/{containerName}"); - ObjectMapper mapper = new ObjectMapper(); - java.net.URLConnection connection = url.openConnection(); - connection.connect(); - EdgeProps result = (EdgeProps) mapper.readValue( connection.getInputStream(), EdgeProps.class ); - //handle the result as needed... - - -=== Objective C Client library - -The Objective C module generates the source code for the Objective C classes and (de)serialization functions that can be used in conjunction with http://xmlsoft.org/[libxml2] to (de)serialize the REST resources as they are represented as XML data. - - -The generated Objective C source code depends on the http://xmlsoft.org/html/libxml-xmlreader.html[XML Reader API] and the http://xmlsoft.org/html/libxml-xmlwriter.html[XML Writer API] as well as the base OpenStep foundation classes. - -==== REST XML example - -[literal] - #import - //... - FULLNS0EdgeProps *responseElement; - NSData *responseData; //data holding the XML from the response. - NSURL *baseURL = ...; //the base url including the host and subpath. - NSURL *url = [NSURL URLWithString: @"/{containerName}" relativeToURL: baseURL]; - NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; - NSURLResponse *response = nil; - NSError *error = NULL; - [request setHTTPMethod: @"GET"]; - //this example uses a synchronous request, - //but you'll probably want to use an asynchronous call - responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; - FULLNS0EdgeProps *responseElement = [FULLNS0EdgeProps readFromXML: responseData]; - [responseElement retain]; - //handle the response as needed... - - - - - - \ No newline at end of file diff --git a/manuals/developer-guide/src/main/asciidoc/core/config.adoc b/manuals/developer-guide/src/main/asciidoc/core/config.adoc deleted file mode 100644 index 18dd79707..000000000 --- a/manuals/developer-guide/src/main/asciidoc/core/config.adoc +++ /dev/null @@ -1,258 +0,0 @@ -== Configuring the OpenDaylight controller - -The common way to configure applications is to use configuration files such as xml or properties files. Although such files are easy for use in small scale applications, they offer limiterd capabilities in the case of fast growing and multi-module applications. Static config files become vast, non-transparent, and inconsistent. For highly dynamic and long living environments, proper configuration is an essential requirement. The OSGi framework provides configuration service (Config Admin), and allows runtime module configuration. However, it still lacks a validation process. A new module configuration can negatively affect other modules. It also does not solve problems relating to the atomicity of the change. - -=== Terms used in this section - -* *Module*: A compact part of a system, whose configuration is managed by the configuration subsystem. - -* *Module factory*: Important for creating module instances. Module factories are uniquely identified by name. - - -* *Service*: Public API, which is used to access module instances, similar to interface in Java. Any module can implement or provide multiple services. - - -* *Configuration*: Application state represented by modules definition, properties, and relations amongst them. - -=== Config component maps - -.Load balancer REST APIs summary - -[cols="3*", options="header"] - -|=== - -|Artefact ID |Component |Description - -|config-api + - -config-manager + - -config-util - -|config-subsystem-core - -|Config subsystem core. Manages the configuration of the controller. -Responsibilities include scanning of bundles for ModuleFactories, transactional management of lifecycle and dependency injection for config modules, and exposure of modules and their configuration into JMX. - - -|netty-config-api + - -netty-timer-config + - -netty-threadgroup-config + - -netty-event-executor-config - -|netty-config - -|Config modules for netty related resources e.g. netty-threadgroup, netty-timer etc. -Contains config module definition in form of yang schemas and generated code binding for config subsystem. - - -|shutdown-api + - -shutdown-impl - -|controller-shutdown - -|Controller shutdown mechanism. Brings down the whole OSGi container of the controller. Authorization required in form of a *secret string*. Also contains config module definition in form of yang schemas and generated code binding for config subsystem. This makes it possible to invoke shutdown using config-sbusystem - - - - -|threadpool-config-api + - -threadpool-config-impl - -|threadpool-config - -|Config modules for threading related resources such as threadfactories and fixed-threadpool. -Contains config module definition in the form of yang schemas and generated code binding for config subsystem. - - - -|logback-config - -|logback-config - -|Config modules for logging(logback) related resources such as loggers and appenders. -Contains config module definition in the form of yang schemas and generated code binding for config subsystem. - - - -|netconf-config-dispatcher - -|netconf-config-dispatcher-config - -|Config modules for netconf-dispatcher(from netconf subsystem). -Contains config module definition in form of yang schemas and generated code binding for config subsystem. - - -|yang-jmx-generator + - -yang-jmx-generator-plugin - -|yang-jmx-config-generator - -|Maven plugin that generates the config subsystem code binding from provided yang schemas. This binding is required when bundles want to participate in the config subsystem. - - - - -|yang-test + - -yang-test-plugin - -|yang-jmx-config-generator-testing-modules - -|Testing resources for the maven plugin. - - -|config-persister-api + - -config-persister-file-xml-adapter + - -config-persister-directory-xml-adapter - - -|config-persister - -|Contains api definition for an extensible configuration persister(database for controller configuration). The persister (re)stores the configuration for the controller. Persister implementation can be found in the netconf subsystem. The adapter bundles contain concrete implementations of storage extension. They store the config as xml files on filesystem. - -|config-module-archetype - -|config-module-archetype - -|Maven archetype for *config subsystem aware* bundles. This archetype contains blueprints for yang-schemas, java classes and other files(e.g. pom.xml) required for a bundle to participate in the config subsystem. This archetype generates a bundle skeleton that can be developed into a full blown *config subsystem aware* bundle. - - -|=== - -=== Configuration and transactional processes for the OpenDaylight controller - -The Configuration operation has three stages: - -. A proposed configuration is created. Its target is to replace the old configuration. - -. The proposed configuration must be validated before it can be committed. If it passes validation successfully, the proposed state of the configuration is changed to validated. - -. A validated configuration can be committed and the affected modules can be reconfigured. - -In fact, each configuration operation is wrapped in a transaction. Once a transaction is created, it can be configured. A user can abort the transaction during this stage. After the transaction configuration is done, it is committed to the validation stage. In this stage, the validation procedures are invoked. If one or more validations fail, the transaction can be reconfigured. On success, the second phase commit is invoked. If this commit is successful, the transaction enters the last stage known as committed. After that, the required modules are reconfigured. If the second phase commit fails, it means that the transaction is unhealthy. Basically, a new configuration instance creation failed, and the application can be in an inconsistent state. - -image::configuration.jpg[title="Configuration stage", alt="Configuration stage"] - -image::Transaction.jpg[title="Transaction stage", alt="Transaction stage"] - - -To secure the consistency and safety of a new configuration, and to avoid conflicts, the configuration validation process is necessary. Usually, validation checks the input parameters of a new configuration and verifies module-specific relationships. The validation procedure results in a decision indicating whether the proposed configuration is healthy. - -Since there can be dependencies between modules, a change of a module configuration can affect the state of other modules. Therefore, we need to verify whether dependencies on other modules can be resolved. The dependency resolver acts similar to dependency injectors. A dependency tree is built. - -=== SPIs - -Module org.opendaylight.controller.config.spi.Module is a common interface for all modules. Every module must implement it. The module is designated to hold configuration attributes, validate them, and create an instance of service based on the attributes. This instance must implement AutoCloseable interface, owing to resources clean up. If the module was created from an already running instance, it contains an old instance of the module. The module can implement multiple services. If the module depends on other modules, setters need to be annotated with @RequireInterface. - -In creating the module, firstly, the module needs to be configured, be set with all required attributes. Thereafter, the module is moved to the commit stage, where validation is performed. If it fails, the module attributes can be reconfigured. Otherwise, a new instance is created or an old instance is reconfigured. A module instance is identified by ModuleIdentifier which consists of the factory name and instance name. - - -ModuleFactory org.opendaylight.controller.config.spi.ModuleFactory interface must be implemented by each module factory. The module factory can create new module instance in two ways: from an existing module instance or a pure new instance. Also, it can return default modules, useful for populating registry with an already existing configuration. A module factory implementation must have a globally unique name. - -=== APIs - -* *ConfigRegistry*: Represents functionality provided by configuration transaction (create, destroy module, validate, abort transaction). - - -* *ConfigTransactionController?*: Represents functionality for manipulating configuration transactions (begin, commit config ). - - -* *RuntimeBeanRegistratorAwareConfiBean*: The module implementing this interface will recieve RuntimeBeanRegistrator before getInstance is invoked. - -=== Runtime APIs - -* *RuntimeBean*: The common interface for all runtime beans. - -* *RootRuntimeBeanRegistrator*: Represents functionality for the root runtime bean registration, which subsequently allows hierarchical registrations. - -* *HierarchicalRuntimeBeanRegistration*: Represents functionality for the runtime bean registration and unreregistration from hierarchy. - -* *JMX APIs*: JMX API is purposed as a transition between Client API and JMX platform. - -* *ConfigTransactionControllerMXBean*: Extends ConfigTransactionController, executed by Jolokia clients on configuration transaction. - -* *ConfigRegistryMXBean*: Represents the entry point of configuration management for MXBeans. - -NOTE: The Object Name is the pattern used in JMX to locate JMX beans. It consists of domain and key properties (at least one key-value pair). Domain is defined as "org.opendaylight.controller". The only mandatory property is "type". - -=== Use case scenarios - -The list provides a few samples of successful and unsuccessful transactions scenarios. - -==== Successful commit scenario - -. The user creates a transaction calling creteTransaction() method on ConfigRegistry. - -. The ConfigRegisty creates a transaction controller and registers the transaction as a new bean. - - -. Runtime configurations are copied to the transaction. The user can create modules, and set their attributes. - - -. The configuration transaction is committed. - - -. The validation process is performed. - - -. After successful validation, the second phase commit begins. - - -. Modules proposed to be destroyed are destroyed, their service instances are closed. - - -. The Runtime beans are set to registrator. - - -. The transaction controller invokes the method getInstance on each module. - - -. The transaction is committed and resources are closed or released. - - - -==== Validation failure scenario - -The transaction is the same as previous case until the validation step. - -. The user creates a transaction calling creteTransaction() method on ConfigRegistry. - -. The ConfigRegisty creates a transaction controller and registers the transaction as a new bean. - - -. Runtime configurations are copied to the transaction. The user can create modules, and set their attributes. - - -. The configuration transaction is committed. - - -. The validation process is performed. - - -. If validation fails such as illegal input attributes values or dependency resolver failure, ValidationException is thrown and exposed to the user. - -. The user can decide to reconfigure the transaction, commit again, or abort current transaction. - - -. On aborted transactions, TransactionController and JMXRegistrator are properly closed. - - -. The Unregistration event is sent to ConfigRegistry. - -=== Default module instances - -The configuration subsystem provides a way for modules to create default instances. Default instance is an instance of a module that is created at the module bundle startup (module becomes visible for configuration subsystem for example, its bundle is activated in OSGi environment). By default, no default instances are produced. - - -The default instance does not differ from instances created later in the module lifecycle. The only difference is that the configuration for the default instance cannot be provided by the configuration subsystem. The module has to acquire the configuration for these instances on its own, and it can be acquired from, for example, environment variables. After the creation of a default instance, it acts as a regular instance, and fully participates in the configuration subsystem (It can be reconfigured or deleted in following transactions.). - diff --git a/manuals/developer-guide/src/main/asciidoc/core/developerkickstarterforodl.adoc b/manuals/developer-guide/src/main/asciidoc/core/developerkickstarterforodl.adoc deleted file mode 100644 index 08a3273bd..000000000 --- a/manuals/developer-guide/src/main/asciidoc/core/developerkickstarterforodl.adoc +++ /dev/null @@ -1,134 +0,0 @@ -== Kick-starter for OpenDaylight developers - -See updated developer getting started information at the https://wiki.opendaylight.org/view/GettingStarted:Developer_Main[Getting Started for Developers Page]. - -=== Downloading the OpenDaylight software - -You can either download the software using CLI or Eclipse. See the relevant sections in the OpenDaylight wiki. - - -=== OpenDaylight infrastructure - - -NOTE: This section is for developers who wish to contribute to the OpenDaylight project. For developers who wish to build proprietary applications based on OpenDaylight, see the section on RESTCONF. - -The OpenDaylight infrastructure consists of the following components. - -* *Source code manager:* http://git-scm.com/[Git]. For more information, see https://wiki.opendaylight.org/view/OpenDaylight_Controller:Gerrit_Setup[Getting started with Git and Gerrit]. - -* *Code review tool:* https://git.opendaylight.org/gerrit/[Gerrit]. For more information, see https://wiki.opendaylight.org/view/OpenDaylight_Controller:Gerrit_Setup[Getting started with Git and Gerrit]. - -* *Continuous integration:* https://jenkins.opendaylight.org/[OpenDaylight Jenkins]. For more information, see Getting started with Jenkins. - -* *Artefact repository:* https://nexus.opendaylight.org/[OpenDaylight Nexus] For more information, see https://wiki.opendaylight.org/view/Infrastructure:Nexus[Getting started with Nexus]. - -* *Quality Management:* https://sonar.opendaylight.org/[OpenDaylight Sonar]. - -* *Bug tracking:* http://bugs.opendaylight.org/[OpenDaylight Bugzilla]. - -* *Wiki:* https://wiki.opendaylight.org/[OpenDaylight wiki]. - -=== Development workflow for contributing to the OpenDaylight project - -The steps below detail the development workflow for contributing to the OpenDaylight project, including any of its sub projects. - - -. *Identifying the project:* Identify the project under OpenDaylight for which you are going to contribute code. For the list of available projects, see https://wiki.opendaylight.org/view/Main_Page#Projects[OpenDaylight Projects]. - -[start=2] -. *Locating the project repository:* Navigate to the selected project page and identify the repository for the project. It maybe listed in the main page or in one of the sub-pages. - -[start=4] -. *Pulling the dependent artefacts:* Pull the dependent artefacts. Most Java and OSGI code bases have a large number of dependencies that are managed by maven. During build, the artefacts (usually binary jars) for those dependencies are pulled from a Development Nexus Artefact Repository. - -[start=3] -. *Pulling the code:* Pull the code from the repository to your local system. For more information, see the relevant section about the project in this developer's guide. - - -[start=5] -. *Contributing to the code:* Start working on the code in your local system. If you think your contributions are ready for review by a group of peer collaborators, push the code to the repository. - -. *Triggering a Jenkins verification:* Trigger a Jenkins verification in Gerrit. Jenkins runs continuous integration tests. - -[start=8] -. *Running CI and verifying the patch:* If the Jenkins tests are successful, the patch is verified in Gerrit. - -. *Reviewing the patch:* A committer picks the patch for consideration. The committer may have comments for you to fix in your code. In this case, make the code changes and re-submit the code for review. - -. *Submitting the patch:* If there are no more comments, the committer indicates to Gerrit that the patch is approved and verified. - -. *Merging the patch:* Gerrit merges the patch into the branch. - -. *Triggering a Jenkins verification:* Jenkins is triggered to run the continuous integration tests on the result of the merge. - -. *Running a Jenkins merge:* Jenkins kicks off the builds for the new artefacts that need to be in the Development Nexus Artifact Repository. - -. *Uploading new artefacts:* If builds (and possible other CI tasks) are successful, Jenkins uploads the new artefacts to the Development Nexus Artefact Repository. - - -=== OpenDaylight architectural principles - - -* *Runtime Modularity and Extensibility*: Allow for a modular, extensible controller that supports installation, removal, and updates to service implementations within a running controller. The feature is also known as in service software upgrade (ISSU). - -* *Multiprotocol Southbound*: Allow for more than one protocol interface with network elements with diverse capabilities southbound from the controller. - - -* *Service Abstraction Layer (SAL)*: Where possible, allow for multiple southbound protocols to present the same northbound service interfaces. - - -* *Open Extensible Northbound API*: Allow for an extensible set of application-facing APIs both across runtimes using REST (level 3 API) and within the same runtime using function calls (level 2 API). The set of accessible functions must be the same. - - -* *Support for Multitenancy/Slicing*: Allow for the network to be logically (and/or physically) split into different slices or tenants with parts of the controller and modules explicitly dedicated to one or a subset of these slices. This includes allowing the controller to present different views of the controller depending on which slice the caller is from. - - -* *Consistent Clustering*: Clustering that gives fine-grained redundancy and scale-out while insuring network consistency. - - -=== Open extensible northbound API - -Allow for an extensible set of application-facing APIs both across runtimes using REST (level 3 API) and within the same runtime using function calls (level 2 API). The set of accessible functions must be the same. - - -Here are the APIs presented by the OpenDaylight projects: - -* OpenDaylight Controller: -** AD-SAL https://wiki.opendaylight.org/view/OpenDaylight_Controller:REST_Reference_and_Authentication[REST and Java APIs] - - -** MD-SAL https://wiki.opendaylight.org/view/OpenDaylight_Controller:RESTCONF_Northbound_APIs[RESTCONF Northbound APIs] - - -* OpenDaylight Virtual Tenant Network - https://wiki.opendaylight.org/view/OpenDaylight_Virtual_Tenant_Network_(VTN):VTN_Coordinator:RestApi[REST API] - - -* Open DOVE - https://wiki.opendaylight.org/view/Open_DOVE:API[Northbound API] - - -* OpenFlow Plugin - N/A - - -* Affinity Metadata Service - N/A - - -* YANG Tools - https://wiki.opendaylight.org/view/YANG_Tools:Available_Models[Available YANG models] - - -* LISP Flow Mapping - https://wiki.opendaylight.org/view/OpenDaylight_Lisp_Flow_Mapping:Java_API[Java API] and https://wiki.opendaylight.org/view/OpenDaylight_Lisp_Flow_Mapping:REST_API[REST API] - - -* OVSDB - https://wiki.opendaylight.org/view/OVSDB_Integration:REST_API[REST API] - - -* OpenFlow Protocol Library - https://wiki.opendaylight.org/view/Openflow_Protocol_Library:Main#Public_API[public API] - - -* BGP-LS/PCEP - N/A - - -* Defense4All - N/A - - -* SNMP4SDN - https://wiki.opendaylight.org/view/File:SAL_API_for_SNMP_SouthBound_Plugin.pdf[(proposed) API] - diff --git a/manuals/developer-guide/src/main/asciidoc/core/odl-controller-AD-SAL-overview.adoc b/manuals/developer-guide/src/main/asciidoc/core/odl-controller-AD-SAL-overview.adoc deleted file mode 100644 index 1d103a7cf..000000000 --- a/manuals/developer-guide/src/main/asciidoc/core/odl-controller-AD-SAL-overview.adoc +++ /dev/null @@ -1,96 +0,0 @@ -== Overview of AD-SAL - -API-Driven Service Abstraction Layer (AD-SAL) is a flavour of the SAL created for the OpenDaylight controller project. The main task of AD-SAL is primarily to create a layer against which the applications can be developed without needing to know the underlying SDN protocols. Using AD-SAL, you can control two different type of network elements in an SDN fashion, meaning by accessing them in a programmatic way. - -AD-SAL was introduced based on the requirements of the network user, such as: - -* Given a network element, list the neighbours and build the network graph. - -* Given a network element, list the interfaces attached to it and what properties they carry. - -Starting from these requirements, we can also assume that certain aspects of the SDN protocols would be common no matter what the actual protocol is doing underneath. This idea allows us to describe the aspects in a generic way using a Java Contract which is usually a set of Java interfaces and supporting objects that represent the data. This way of creating contracts that allows a consumer of the contract to be insulated by the possible implementation is rather common in the Java world. Some examples are as follows: - -* https://www.jcp.org/en/jsr/detail?id=315[Servlet 3.0] - -* http://en.wikipedia.org/wiki/Jax-rs[JAX-RS] - -These examples use http://en.wikipedia.org/wiki/Java_Specification_Request[JSR (Java Specification Request)] which can be implemented by different providers. - -For example Servlet 3.0 contracts can be implemented by Tomcat or Jetty or other servlet container. Going by the same analogy, the protocol plugins (i.e. the components that can understand an SDN protocol and convert them to the common layer) can implement one or more of these contracts based on the capabilities. The SAL defined in AD-SAL is just an adaptation layer to enable the protocol plugins to speak common aspects but only if they can do it. The SAL does not force a lowest common denominator for all to be spoken, but rather given a certain aspect if the protocol plugins supports it, it will be supported in a common fashion. - -=== An example of protocols in AD-SAL - -image::multiprotocol_AD-SAL.jpg[title="Protocols in AD-SAL", alt="Protocols in AD-SAL"] - - -In the image above, there are 4 types of contracts, identified by the coloured triangles, and there are 3 protocol plugins that provide implementation for those contracts. - -For example the *Topology* contract (the one used to learn the network graph) is implemented by all of the protocol plugins while the *Bridge Configuration* contract is only implemented by OVSDB because the others are not capable of it. That is perfectly fine and actually expected because that allows us not to revert to the lowest common denominator feature for all the protocol plugins. - -The image below explains how an application has to deal with the optional presence of a contract on a given network element. In the image, an application is trying to create a bridge on Nodes O1, O2 and OF1, the first two are capable of that contract, the third one is not, so the application has to take care of it and handle the return code. - -image::Applications_AD-SAL.jpg[title="Applications using AD-SAL", alt="Applications using AD-SAL"] - -In summary AD-SAL is just enforcing that the protocol plugins speak a common language for words that can be expressed in a common language. The dictionary of the common language is not hardcoded, it can be extended supplying new contracts to AD-SAL such that new protocols plugin can implement it and applications can consume them. - -To migrate from AD-SAL to MD-SAL, see https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:AD-SAL_Compatibility[MD-SAL:AD-SAL Compatibility]. - -NOTE: For information on MD-SAL, see the relevant pages in this document. - -=== Differences between AD-SAL and MD-SAL - -.Differences between AD-SAL and MD-SAL - -[cols="2*", options="header"] - -|=== - -|AD-SAL |MD-SAL - -|API-Driven SAL - -|Model-Driven SAL - - -|The SAL APIs request routing between consumers and providers. Data adaptations are all statically defined at compile or build time. - -|The SAL APIs request routing between consumers and providers as defined from models, and data adaptations are provided by internal adaptation plugins. - -|The AD-SAL typically has both northbound and southbound APIs even for functions or services that are mapped 1:1 between southbound plugins and northbound plugins. - -|The MD-SAL allows both the northbound and southbound plugins to use the same API generated from a model. One plugin becomes an API (service) provider; the other becomes an API (service) consumer. - -|In AD-SAL there is a dedicated REST API for each northbound or southbound plugin. - -| MD-SAL provides a common REST API to access data and functions defined in models. - -|The AD-SAL provides request routing (selects a southbound plugin based on service type) and optionally provides service adaptation, if an northbound (Service, abstract) API is different from its corresponding southbound (protocol) API. - -| The MD-SAL provides request routing and the infrastructure to support service adaptation, but it does not provide service adaptation itself, service adaptation is provided by plugins. - - -|Request routing is based on plugin type. The SAL knows which node instance is served by which plugin, and when a northbound plugin requests an operation on a given node, the request is routed to the appropriate plugin which then routes the request to the appropriate node. - -| Request Routing in the MD-SAL is done on both protocol type and node instances, since node instance data is exported from the plugin into the SAL. - -|AD-SAL is stateless. - -| MD-SAL can store data for models defined by plugins. Provider and consumer plugins can exchange data through the MD-SAL storage. - - -|Limited to flow-capable device and service models only. - -|Model agnostic. It can support any device or service models and is not limited to flow-capable device and service models only. - - - -|AD-SAL services usually provide both asynchronous and synchronous versions of the same API method. - -|In MD-SAL, service model APIs only provide asynchronous APIs, but they return a *java.concurrent.Future* object, which allows a caller to block until the call is processed and a result object is available. Same API can be used for both synchronous and asynchronous approach. Thus MD-SAL encourages asynchronous approach to application design but does not preclude synchronous applications. - - - - - - - diff --git a/manuals/developer-guide/src/main/asciidoc/core/odl-controller-controller-overview.adoc b/manuals/developer-guide/src/main/asciidoc/core/odl-controller-controller-overview.adoc deleted file mode 100644 index 1fed2b118..000000000 --- a/manuals/developer-guide/src/main/asciidoc/core/odl-controller-controller-overview.adoc +++ /dev/null @@ -1,251 +0,0 @@ -== OpenDaylight controller overview - -The OpenDaylight controller is a JVM software and can be run from any operating system and hardware as long as it supports Java. It is a implementation of the concept of Software Defined Network (SDN). - -=== Background to the emergence of SDN - -Current generation networks and architectures are statically configured and vertically integrated. New generation applications require networks to be agile and flexibly adapt to application requirements. As networks get larger, especially in massively scalable datcenters and cloud, there is a large requirement for ease-of-management and orchestration. - -The following are the requirements of modern consumers of the networking industry: - - -* *Agile networks*: As application programmers require their applications to be moved around in a datacenter or across clouds, it becomes imperative that the network becomes agile in meeting the requirements (bandwidth, services like load balancing, firewall) of the applications. - -* *Vendor neutrality*: Network abstraction and virtualization is required as it allows the network operators to operate the network at a higher level without worrying about the quirkiness of different products from the same or different vendors. - - -* *Ease of building new applications*: Network operators require that they be able to influence the forwarding and other network behavior based on their own algorithms and business logic. That means there is a need for the network to not be vertically integrated with the networking control logic coming only from the networking vendor. - - -=== SDN architecture principles - -SDN consists of a network applications layer on the top written to open API. There is a controller in the middle interacting with and managing network devices. Clearly there needs to be some sort of API or protocol needed for the controller and the network devices to communicate with each other. OpenFlow is one such protocol which has come out of the efforts of Open Networking Foundation (ONF). The network devices support agents which interpret the protocol and the API. - - -Central to the SDN effort is the controller which provides the ability to deploy software to control the network gear and redeploy as needed. The vision is to have a modular controller with a well published Northbound API for network applications to write towards while utilizing southbound protocols such as OpenFlow to communicate with supported downstream network nodes. The industry and end users will benefit immensely by having an OpenSource controller with contributions from various industry players. - -The OpenDaylight controller supports not only the OpenFlow protocol but also other open protocols to allow communication with devices which have OpenFlow and/or respective agents. It also includes Northbound APIs to allow customer applications (software) to work with the controller in controlling the network. The customer applications cover a wide spectrum of solutions for solving customer needs across different vertical market segments. - -The controller architecture supports both the hybrid switch model as well as the classical OpenFlow model of having a fully centralized control plane. - -=== OpenDaylight controller framework - -The following image shows the framework of the OpenDaylight controller. - - -image::odl-framework.jpg[title="Framework of OpenDaylight", alt="Framework of OpenDaylight"] - -OpenDaylight uses the following tools or paradigms: - -* *Maven*: OpenDaylight uses Maven for easier build automation. Maven uses pom.xml (Project Object Model) to script the dependencies between bundle and also to describe what bundles to load and start. - -* *OSGi*: This framework is the back-end of OpenDaylight as it allows dynamically loading bundles and packages JAR files, and binding bundles together for exchanging information. - -* *JAVA interfaces*: Java interfaces are used for event listening, specifications, and forming patterns. This is the main way in which specific bundles implement call-back functions for events and also to indicate awareness of specific state. - -* *REST APIs*: These are northbound APIs such as topology manager, host tracker, flow programmer, static routing, and so on. - -The controller exposes open northbound APIs which are used by applications. The OSGi framework and bidirectional REST are supported for the northbound APIs. The OSGi framework is used for applications that run in the same address space as the controller while the REST (web-based) API is used for applications that do not run in the same address space (or even the same system) as the controller. The business logic and algorithms reside in the applications. These applications use the controller to gather network intelligence, run its algorithm to do analytics, and then orchestrate the new rules throughout the network. - -On the southbound, multiple protocols are supported as plugins, e.g. OpenFlow 1.0, OpenFlow 1.3, BGP-LS, and so on. The OpenDaylight controller starts with an OpenFlow 1.0 southbound plugin. Other OpenDaylight contributors begin adding to the controller code. These modules are linked dynamically into a *Service Abstraction Layer* (SAL). - -The SAL exposes services to which the modules north of it are written. The SAL figures out how to fulfil the requested service irrespective of the underlying protocol used between the controller and the network devices. This provides investment protection to the applications as OpenFlow and other protocols evolve over time. For the controller to control devices in its domain, it needs to know about the devices, their capabilities, reachability, and so on. This information is stored and managed by the *Topology Manager*. The other components like ARP handler, Host Tracker, Device Manager, and Switch Manager help in generating the topology database for the Topology Manager. - -The controller has a built in GUI. The GUI is implemented as an application using the same Northbound API as would be available for any other user application. - -See the sections below for an overview of the main components of the OpenDaylight controller. - -=== Service Abstraction Layer framework - -Service Abstraction Layer (SAL) is at the heart of the modular design of the controller and allows it to support multiple protocols on the southbound. SAL also provides consistent services for modules and applications where the business logic is embedded. - -image::SAL.jpg[title="Framework of SAL", alt="Framework of SAL"] - -The OSGi framework allows dynamically linking plugins for the evolving southbound protocols. The SAL provides basic services such as device discovery which is used by modules like Topology Manager to build the topology and device capabilities. Services are constructed using the features exposed by the plugins (based on the presence of a plugin and capabilities of a network device). Based on the service request, the SAL maps to the appropriate plugin and uses the most appropriate southbound protocol to interact with a given network device. Each plugin is independent of others and is loosely coupled with the SAL. - -NOTE: The OpenFlow 1.0 plugin is currently provided with OpenDaylight and other plugins shown in the images are examples of the extensibility of the SAL framework. The SAL framework is included in the OpenDaylight controller contribution. - -=== SAL architecture - - -image::sal_architecture.jpg[title="SAL system architecture", alt="SAL system architecture"] - - -The subsystems in the above figure are as follows: - -* *Provider*: A component that exhibits functionality to applications and other providers (plugins) through its northbound API. A provider can be a consumer of other providers. There are two types of providers: - -** *Binding Independent Providers*: Their functionality is exhibited in the binding-independent Data DOM format. - -** *Binding Aware Providers*: Their functionality is exposed in a format compiled against one or more generated binding interfaces. - -* *Consumer*: A component that consumes functionality provided by one or more providers. There are two types of consumers: - -** *Binding Independent Consumers*: Their functionality is consumed in the binding-independent Data DOM format. - -** *Binding Independent Consumers*: Their functionality is consumed using one or more generated binding interfaces. - -* *Binding Independent Broker*: The core component of the model-driven SAL. It routes RPCs, notifications and data changes between various providers and consumers. - -* *Binding Aware Broker*: Provides programmatic APIs and Java language support to both consumers such as controller applications or plugins and providers. It is a façade or proxy built on top of the Binding Independent Broker that simplifies access to data and services provided by Binding-Independent providers and Binding-Aware providers. - - -* *BI Data Repository*: A binding-independent infrastructure component of SAL that is responsible for storage of configuration and transient data. - -* *Binding Schema Repository*: An infrastructure component responsible for storing specifications of YANG–Java relationships and mapping between language-binding APIs to binding-independent API calls. - -* *Binding Generator*: A SAL infrastructure component which generates implementations of binding interfaces and data mappers to the binding-independent format. - -=== SAL architecture subsystems - -In context of the controller architecture, two subsystem categories are defined: - - -* *Top-Level Subsystems*: Subsystems such as a data store, or a validator. There is typically only a single instance of a top-level subsystem per API revision. Top-level subsystems can be controller components or applications (providers or consumers) deployed in the controller that use the controller SAL to communicate with other controller components, applications, and plugins. -Top-Level Subsystems usually have either a single instance per system or API, or multiple versioned instances, where each instance is unique to a revision of the contract defined by YANG models. In the latter case, each instance represents a single closed system. Prime examples for top-level subsystem are brokers and data repositories. - -* *Nested Subsystems*: A subsystem which could be local or remote. It can expose a set of functionality at multiple places or in multiple instances. A network element, such as a router or switch, is an example of a nested subsystem. Data of a nested subsystem is attached or mounted under a node in the controller’s datastore. The data in a nested subsystem may represent data present in another system or in a local controller component, such as a plugin. It may also be dynamically generated by a controller component, or translated from other protocols. - -NOTE: Consumers may need to invoke the functionality provided by nested subsystems. An RPC Broker must provide functionality that enableS nested RPC functionality in Providers. Furthermore, a Broker must be able to route RPCs to the Providers of nested subsystems for further processing. - - -=== SAL service sets - -* *Topology services* is a set of services that allow to convey topology information such as discovering a new node, a new link, and so on. - -* *Data Packet services* are SAL services that deliver the packets coming from the agents to applications. - -* *Flow Programming services* provide the necessary logic to program different match-actions rules. - -* *Statistics services* export APIs to collect statistics per flow, node connector, queue, and so on. - -* *Inventory services* provide APIs for returning inventory information about the node and node connectors for example. - -* *Resource services* is a placeholder to query resource status. - - -==== Data packet service as example of SAL service implementation - -As an example of a SAL service implementation, see the Data Packet Service with OpenFlow 1.0 plugin in the section below. - -image::data_packet_service.jpg[title="Data packet service ", alt="Data packet service"] - - -* *IListenDataPacket* is a service implemented by the upper layer module or application (ARP Handler is one such module) which wants to receive data packets. - - -* *IDataPacketService* is an interface that provides the service of sending and receiving packets from the agent. This service is registered in the OSGi service registry so that an application can retrieve it. - -* *IPluginOutDataPacketService* is an interface that is exported by SAL when a protocol plugin wants to deliver a packet toward the application layer. - -* *IPluginInDataPacketService* is an interface that is exported by the protocol plugin and is used to send out the packets through SAL towards the agent on the network devices. - -The process followed by the SAL is described as follows: - -. The OpenFlow plugin receives an ARP packet that must be dispatched to the ARP handler application. - -. The OpenFlow Plugin calls *IPluginOutDataPacketService* to get the packet to the SAL. - -. The ARP handler application is registered to the *IListenDataPacket Service*. The SAL hands over the packet to the ARP handler application. - - -. The application now processes the packet. - - -For the reverse process of the application sending a packet out, the process followed is described below: - -. The application constructs the packet and calls the interface *IDataPacketService* to send the packet. The destination network device is to be provided as part of the API. - -. SAL calls the *IPluginInDataPacketService* interface for a given protocol plugin based on the destination network device, the protocol is OpenFlow in this case. - -. The protocol plugin then ships the packet to the appropriate network element. The plugin handles all protocol-specific processing. - -NOTE: For more information on other service sets, see the Java and API documentation. - -=== Northbound and southbound plugins - -See the images below for examples of SAL northbound and southbound plugins. - -image::SAL_NB_Plugins.jpg[title="SAL northbound plugins", alt="SAL northbound plugins"] - - -image::SAL_sb.jpg[title="SAL southbound plugins", alt="SAL southbound plugins"] - -=== OpenDaylight modules - -The following are the OpenDaylight modules. See the relevant sections for an overview of each module. - -* AD-SAL - API-Driven Service Abstraction Layer - -* AD-SAL Network Service Functions for OpenFlow-capable nodes: - -** Switch Manager - -** Statistics Manager - -** Host Tracker - -** ARP Handler - -** Forwarding Rules Manager (FRM) - -** Topology Manager - -* Clustering and High-Availability Services for AD-SAL - -* MD-SAL - Model-Driven Service Adaptation Layer - -* MD-SAL Base Network Functions: - -** Topology Exporters - -** Inventory Managers - -* MD-SAL Network Service Functions for OpenFlow-capable nodes: - -** Forwarding Rules Manager (FRM) - -** Statistics Manager - -* MD-SAL NETCONF Connector (Southbound NETCONF Plugin) - -* MD-SAL RESTCONF Connector (Northbound RESTCONF Plugin) - an infrastructure component that renders REST APIs for device/service models loaded into the controller - -* Config Subsystem - NETCONF/YANG based framework for configuration, performance and fault management of controller infrastructure and plugins deployed into the controller - -* NSF Adapters - Network Service Function Adapter that allow the MD-SAL based OF1.0/1.3 Plugin to talk with AS-SAL based Network Service Functions - - -=== OpenDaylight controller GUI - -The GUI is implemented as an application and uses the northbound REST API to interact with the other modules of the controller. The architecture thus ensures that whatever is available with the GUI is also available using the REST API. The controller can be integrated easily into other management or orchestration systems. - -=== High Availability - -The OpenDaylight controller supports a cluster-based high availability model. There are several instances of the OpenDaylight controller which logically act as one logical controller. This not only gives redundancy but also allows a scale-out model for linear scalability. To make the controller highly available, resilience needs to be added at the controller, OpenFlow-enabled switches, and the applications. - -The OpenFlow enabled switches connect to two or more instances of the controller using persistent point-to-point TCP/IP connection. On the northbound side, between the controller and the applications, the interaction is done using RESTful webservices. This is applicable for all the request-response types of interaction. The interactions based on HTTP and being HTTP based on non-persistent connections between the server and the client, it's possible to leverage all the high-available techniques used to give resilience on the web such as: - -* Providing the cluster of controller with a virtual IP to be reached using an anycast type of solution - - -* Having the application to talk to the cluster after a DNS request is done using a DNS round-robin technique - -* Deploying between the applications and the cluster of controller an HTTP load-balancer that can not only provide resilience but also distributed the workload accordingly to the URL requested. - -The interaction between the controller(s) and the Open-Flow enabled switches is essentially to have one Openflow switch multi-homed to multiple controller, so if one of the controller goes down another is ready to control the switch. This interaction has already been specified in the OpenFlow 1.2 specifications in particular Section 6.3 of Openflow 1.2 specifications. To summarize it when having multiple controllers connected to one switch, the openflow 1.2 specification specify two mode of operations: - -* Equal interaction: in this case all the controllers have read/write access to the switch, which means they have to syncronize in order no to step on each other feet. - - -* Master/Slave interaction: in this case there will be one master and multiple slaves (there could be still multiple equal as well) - - -For more information, see the OpenDaylight wiki. - - - - - - - diff --git a/manuals/developer-guide/src/main/asciidoc/core/odl-controller-gitandgerrit_setup.adoc b/manuals/developer-guide/src/main/asciidoc/core/odl-controller-gitandgerrit_setup.adoc deleted file mode 100644 index e872154b5..000000000 --- a/manuals/developer-guide/src/main/asciidoc/core/odl-controller-gitandgerrit_setup.adoc +++ /dev/null @@ -1,144 +0,0 @@ -== Getting started with Git and Gerrit - -Git is an opensource distributed version control system (dvcs) written in the C language and originally developed by Linus Torvalds and others to manage the Linux kernel. In Git, there is no central copy of the repository. After you have cloned the repository, you have a functioning copy of the source code with all the branches and tagged releases, in your local repository. - -Gerrit is an opensource web-based collaborative code review tool that integrates with Git. It was developed at Google by Shawn Pearce. Gerrit provides a framework for reviewing code commits before they are accepted into the code base. Changes can be uploaded to Gerrit by any user. However, the changes are not made a part of the project until a code review is completed. Gerrit is also a good collaboration tool for storing the conversations that occur around the code commits. - -The OpenDaylight source code is hosted in a repository in Git. Developers must use Gerrit to commit code to the OpenDaylight repository. - -NOTE: For more information on Git, see http://git-scm.com/. For more information on Gerrit, see https://code.google.com/p/gerrit/. - -=== Setting up a Gerrit account - -. Using a Google Chrome or Mozilla Firefox browser, go to https://git.opendaylight.org/gerrit - -The main page shows existing Gerrit requests. These are patches that have been pushed to the repository and not yet verified, reviewed, and merged. - -NOTE: If you already have an OpenDaylight account, you can click *Sign In* in the top right corner of the page and follow the instructions to enter the OpenDaylight page. - -.Signing in to OpenDaylight account - -image::Sign_in.jpg[Signing in to OpenDaylight account] - -[start=2] - -. If you do not have an existing OpenDaylight account, click *Account signup/management* on the top bar of the main Gerrit page. - -The *WS02 Identity Server* page is displayed. - - -.Gerrit Account signup/management link - -image::Gerrit_setup.jpg[Account signup/management link] - -[start=3] - -. In the *WS02 Identity Server* page, click *Sign-up* in the left pane. - -There is also an option to authenticate your sign in with OpenID. This option is not described in this document. - -.Sign-up link for Gerrit account - -image::sign-up.jpg[Sign-up link for Gerrit account] - -[start=4] - -. Click on the *Sign-up with User Name/Password* image on the right pane to continue to the actual sign-up page. - -.Sign-up with User Name/Password Image - -image::signup_image.jpg[Sign-up with User Name / Password Image] - -[start=5] - -. Fill out the details in the account creation form and then click *Submit*. - -.Filling out the details - -image::form_details.jpg[Filling out the details] - -You now have an OpenDaylight account that can be used with Gerrit to pull the OpenDaylight code. - -=== Generating SSH keys for your system - -You must have SSH keys for your system to register with your Gerrit account. The method for generating SSH keys is different for different types of operating systems. - -The key you register with Gerrit must be identical to the one you will use later to pull or edit the code. For example, if you have a development VM which has a different UID login and keygen than that of your laptop, the SSH key you generate for the VM is different from the laptop. If you register the SSH key generated on your VM with Gerrit and do not reuse it on your laptop when using Git on the laptop, the pull fails. - -NOTE: For more information on SSH keys for Ubuntu, see https://help.ubuntu.com/community/SSH/OpenSSH/Keys. For generating SSH keys for Windows, see https://help.github.com/articles/generating-ssh-keys. - -For a system running Ubuntu operating system, follow the steps below: - -. Run the following command: - -[literal] - -mkdir ~/.ssh -chmod 700 ~/.ssh -ssh-keygen -t rsa - -[start=2] - -. You are prompted for a location to save the keys, and a passphrase for the keys. - -This passphrase protects your private key while it is stored on the hard drive. You must use the passphrase to use the keys every time you need to login to a key-based system. - -[literal] - -Generating public/private rsa key pair. -Enter file in which to save the key (/home/b/.ssh/id_rsa): -Enter passphrase (empty for no passphrase): -Enter same passphrase again: -Your identification has been saved in /home/b/.ssh/id_rsa. -Your public key has been saved in /home/b/.ssh/id_rsa.pub. - -Your public key is now available as *.ssh/id_rsa.pub* in your home folder. - -=== Registering your SSH key with Gerrit - -. Using a Google Chrome or Mozilla Firefox browser, go to https://git.opendaylight.org/gerrit. - -[start=2] -. Click *Sign In* to access the OpenDaylight repository. - -.Signin in to OpenDaylight repository - -image::Sign_in.jpg[Signin in to OpenDaylight repository] - -[start=3] -. Click your name in the top right corner of the window and then click *Settings*. - -The *Settings* page is displayed. - -.Settings page for your Gerrit account - -image::Gerrit_settings.jpg[Settings page for your Gerrit account] - -[start=4] -. Click *SSH Public Keys* under *Settings*. - -. Click *Add Key*. - -. In the *Add SSH Public Key* text box, paste the contents of your *id_rsa.pub* file and then click *Add*. - -.Adding your SSH key - -image::SSH_keys.jpg[Adding your SSH key] - -To verify your SSH key is working correctly, try using an SSH client to connect to Gerrit's SSHD port. - -[literal] - -$ ssh -p 29418 @git.opendaylight.org -Enter passphrase for key '/home/cisco/.ssh/id_rsa': -**** Welcome to Gerrit Code Review **** -Hi , you have successfully connected over SSH. -Unfortunately, interactive shells are disabled. -To clone a hosted Git repository, use: git clone ssh://@git.opendaylight.org:29418/REPOSITORY_NAME.git -Connection to git.opendaylight.org closed. - -You can now proceed to either Pulling, Hacking, and Pushing the Code from the CLI or Pulling, Hacking, and Pushing the Code from Eclipse depending on your implementation. - - - - diff --git a/manuals/developer-guide/src/main/asciidoc/core/odl-controller-load balancer service.adoc b/manuals/developer-guide/src/main/asciidoc/core/odl-controller-load balancer service.adoc deleted file mode 100644 index a937d6f7b..000000000 --- a/manuals/developer-guide/src/main/asciidoc/core/odl-controller-load balancer service.adoc +++ /dev/null @@ -1,345 +0,0 @@ -== Load balancer service as a sample OpenDaylight application - -This is a sample load balancer application that balances traffic to back-end servers based on the source address and source port on each incoming packet. The service reactively installs OpenFlow rules to direct all packets with a specific source address and source port to one of the appropriate back-end servers. The servers may be selected using a round robin policy or a random policy. This service can be configured using a REST API which is similar to the OpenStack Quantum LBaaS (Load-balancer-as-a-Service) v1.0 API proposal at http://wiki.openstack.org/Quantum/LBaaS. - -To use the load balancer service, a virtual IP (or VIP) must be introduced to the clients of the service and used as the destination address. - -NOTE: A VIP is an entity that comprises of a virtual IP, port, and protocol (TCP or UDP). - -=== Assumptions for the VIP - -The assumptions for the VIP are as follows: - -* One or more VIPs may be mapped to the same server pool. - -* All VIPs that share the same pool must also share the same load balancing policy. The policy may be random or round robin. - -* Only one server pool can be be assigned to a VIP. - -* All flow rules are installed with an idle time-out of 5 seconds. - -* The flow rules must automatically time out after the idle time-out of 5 seconds. - -* Packets to a VIP must leave the OpenFlow cluster from the same switch from where they entered. - - -* When you delete a VIP or a server pool or a server from a pool, the service does not delete the already installed flow rules. - - -=== Load balancer REST APIs summary - -.Load balancer REST APIs summary - -[cols="5*", options="header"] - -|=== - -|Description |URI |Type |Request Body/Arguments |Response Codes - -|List details of all existing pools - -|/one/nb/v2/lb/{container-name*}/ - -|GET - -| - - -|200 ("Operation successful") + - -404 ("The containerName is not found") + - -503 "Load balancer service is unavailable") - - - -|List details of all existing VIPs - -|/one/nb/v2/lb/{container-name}/vips - -|GET - -| - - -|200 ("Operation successful") + - -404 ("The containerName is not found") + - -503 ("Load balancer service is unavailable") - - - -|Create pool - -|/one/nb/v2/lb/{container-name}/create/pool - - -|POST - - -|{ -"name":"", -"lbmethod":"" -} - -|201 ("Pool created successfully") + - -404 ("The containerName not found") + - -503 ("Load balancer service is unavailable") + - -409 ("Pool already exist") + - -415 ("Invalid input data") + - - -|Delete pool - -|/one/nb/v2/lb/{container-name}/delete/pool/{pool-name} - -|Delete - -| - - -|200 ("Pool deleted successfully") + - -404 ("The containerName not found") + - -503 ("Load balancer service is unavailable") + - -404 ("Pool not found") + - -500 ("Failed to delete pool") - -|Create VIP - -|/one/nb/v2/lb/{container-name}/create/vip - -|POST - -|{ -"name":"", -"ip":"ip in (xxx.xxx.xxx.xxx) format", -"protocol":"TCP/UDP", -"port":"any valid port number", -"poolname":"" (optional) -} - -|201 ("VIP created successfully")+ - -404 ("The containerName not found") + - -503 ("Load balancer service is unavailable")+ - -409 ("VIP already exists") + - -415 ("Invalid input data") - - -|Update VIP - -|/one/nb/v2/lb/{container-name}/update/vip - -|PUT - -|{ -"name":"", -"poolname":"" -} - -|201 ("VIP updated successfully") + - -404 ("The containerName not found") + - -503 ("VIP not found") + - -404 ("Pool not found") + - -405 ("Pool already attached to the VIP") + - -415 ("Invalid input name") - -|Delete VIP - -|/one/nb/v2/lb/{container-name}/delete/vip/{vip-name} - -|DELETE - -| - - -|200 ("VIP deleted successfully") + - -404 ("The containerName not found") + - -503 ("Load balancer service is unavailable") + - -404 ("VIP not found") + - -500 ("Failed to delete VIP") - - -|Create pool member - - -|/one/nb/v2/lb/{container-name}/create/poolmember - - -|POST - -|{ -"name":"", -"ip":"ip in (xxx.xxx.xxx.xxx) format", -"poolname":"existing pool name" -} - - -|201 ("Pool member created successfully") + - -404 ("The containerName not found") + - -503 ("Load balancer service is unavailable") + - -404 ("Pool not found") + - -409 ("Pool member already exists") + - -415 ("Invalid input data") + - - -|Delete pool member - -|/one/nb/v2/lb/{container-name}/delete/poolmember/{pool-member-name}/{pool-name} - -|DELETE - -| - -|200 ("Pool member deleted successfully") + - -404 ("The containerName not found") + - -503 ("Load balancer service is unavailable") + - -404 ("Pool member not found") + - -404 ("Pool not found") - -|=== - - -NOTE: Current implementation of OpenDaylight uses `default` as a container name. Property `name` of each individual entity must be unique. - -=== Starting the load balancer - -. Start the OpenDaylight controller. Ensure that the *samples.loadbalancer* and *samples.loadbalancer.northbound* modules are loaded by the controller. - -. Create any mininet topology and connect it to the controller. For this example, assume a tree topology with *depth=2* and *fanout=4*. This topology creates 16 hosts, 4 edge switches each connected to 4 hosts, and 1 core switch connected to all the 4 edge switches. You can use the following command to start mininet with this tree topology. - -[literal] - -mn --topo=tree,2,4 --controller=remote,ip=,port=6633 - -This default tree topology assigns ip addresses from 10.0.0.1 to 10.0.0.16/8 IP to its 16 hosts. - -[start=3] - -. Add a default gateway in OpenDaylight for the mininet network as mentioned in the following URL: https://wiki.opendaylight.org/view/OpenDaylight_Controller:Installation - -. Run the command *pingall* in mininet and make sure that all the hosts are reachable from each other. - -. Create the load balancer pool with round robin load balancing policy as follows: - -[literal] - -curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST -http://:8080/one/nb/v2/lb/default/create/pool -d '{"name":"PoolRR","lbmethod":"roundrobin"}' - -[start=6] -. Create the load balancer VIP as follows: - -[literal] -curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST -http://:8080/one/nb/v2/lb/default/create/vip -d '{"name":"VIP-RR","ip":"10.0.0.20","protocol":"TCP","port":"5550","poolname":"PoolRR"}' - -Pool-name data in the REST call above is optional. In case no pool exists while creating the VIP, you can attach the pool at a later point of time by using the following REST call: - -[literal] -curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X PUT -http://:8080/one/nb/v2/lb/default/update/vip -d '{"name":"VIP-RR","poolname":"PoolRR"}' - - -[start=7] -. Add pool members to the load balancer pool. Host H1 (10.0.0.1) will be used as a source or client that sends traffic to the VIP. - -[literal] -curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST -http://:8080/one/nb/v2/lb/default/create/poolmember -d '{"name":"PM2","ip":"10.0.0.2","poolname":"PoolRR"}' -curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST -http://:8080/one/nb/v2/lb/default/create/poolmember -d '{"name":"PM3","ip":"10.0.0.3","poolname":"PoolRR"}' - -Similarly you can add all the remaining 13 hosts to the pool. - -[start=8] -. Since the VIP created in step 6 does not exist in the network, the controller does not resolve the ARP for the IP of the VIP. The load balancer application assumes that if the VIP is configured and exposed by the user to an internal or external network. Packets that are destined to the VIP's IP address gets routed to it through external mechanisms. For this example, we can locally resolve the ARP for the VIP's IP, by adding static entry to the ARP table of the client or source host. The steps below takes you through details of how to accomplish the step. - -==== Locally resolving ARP for the VIP's IP - -. Spawn xterm for hosts h1 to h4 from the mininet prompt. - -. Add static ARP entry for VIP's IP address in the host h1 ARP cache. Run the following command in the h1 xterm window to add the ARP entry. - -[literal] -arp -s 10.0.0.20 00:00:10:00:00:20 - -[start=3] - -. On h1, start iperf client that sends traffic to the virtual ip address. - -[literal] -iperf -c 10.0.0.20 -p 5550 - -The iperf client connects to the iperf server running on host h2. - -[start=4] - -. After the previous test of iperf finishes, trigger the iperf client again. The iperf client connects to the iperf server running on host h3. Similarly, in the next iteration, it connects to the h4 node in round robin fashion. - -Similarly, you can try the random load balancing policy by creating the load balancer pool with `random` policy. - - -=== Cleaning the load balancer entity - -You can run the following curl commands to clean up the load balancer entities you created in the previous section. - -==== Deleting pool members - -Delete pool members by running the command below: - -[literal] - -curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X DELETE -http://:8080/one/nb/v2/lb/default/delete/poolmember/PM2/PoolRR' - -You can delete the remaining pool members similarly. - -==== Deleting VIP - -Delete VIP by running the command below: - -[literal] - -curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X DELETE -http://:8080/one/nb/v2/lb/default/delete/vip/VIP-RR - - -==== Deleting pool - -Delete pool by running the command below: - -[literal] -curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X DELETE -http://:8080/one/nb/v2/lb/default/delete/pool/PoolRR - diff --git a/manuals/developer-guide/src/main/asciidoc/core/odl-controller-pushpullcode_CLI.adoc b/manuals/developer-guide/src/main/asciidoc/core/odl-controller-pushpullcode_CLI.adoc deleted file mode 100644 index 54e0bf04d..000000000 --- a/manuals/developer-guide/src/main/asciidoc/core/odl-controller-pushpullcode_CLI.adoc +++ /dev/null @@ -1,196 +0,0 @@ -== Pulling, contributing, and pushing the OpenDaylight controller code using the GIT CLI - -The OpenDaylight project has a number of sub-projects under it. Each of these sub-projects have their own repositories in Gerrit. You can use either Git or Eclipse to contribute to the code for any of these sub-projects. - -For a list of OpenDaylight projects, see https://wiki.opendaylight.org/view/Main_Page#Projects[OpenDaylight Projects]. - -=== Prerequisites for contributing code to the OpenDaylight project - -* You have created a Gerrit account and have registered a public-private key pair for using Git over SSH. For more information, see https://wiki.opendaylight.org/view/OpenDaylight_Controller:Gerrit_Setup[Getting started with Git and Gerrit]. - -* Your credentials (name, email) are configured properly in Git by running the following command: - -[literal] -git config --global user.name "John Doe" -git config --global user.email johndoe@example.com - -* You are familiar with Git commands. For more information, see https://wiki.opendaylight.org/view/GIT_Cheat_Sheet[GIT Cheat Sheet]. - -* You have installed Maven in your system. For more information about Maven, see http://maven.apache.org/[Apache Maven Project]. - -To install Maven using *yum* as the package manager, run the command: - -[literal] -sudo yum install maven - -* You have installed Java 1.7+ in your system, including the JDK. For more information, see http://www.oracle.com/technetwork/java/javase/downloads/index.html[Java SE Downloads]. - -To install Java using *yum* as the package manager, run the command: - -[literal] -sudo yum install java-1.7.0-openjdk - -The output must match the sample message given below: - -[literal] -[~]$ java -version -java version "1.7.0_55" -OpenJDK Runtime Environment (fedora-2.4.7.0.fc20-x86_64 u55-b13) -OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode) - -NOTE: For more information on setting up the environment for developing code for OpenDaylight, see https://wiki.opendaylight.org/view/GettingStarted:Development_Environment_Setup[Getting Started with the Development Environment]. - -NOTE: You may also use the git review tool to push your changes to the repository. For more information, see https://wiki.opendaylight.org/view/Git-review_Workflow[Git Review Workflow] - - - - -=== Building the OpenDaylight code - -Run the following command: - -[literal] -cd opendaylight/distribution/opendaylight/ -mvn clean install - -=== Troubleshooting Maven issues - -* The Maven build may run out of PermGen depending on the number of artifacts built. This issue usually occurs when building the opendaylight distribution. To resolve the issue, increase the PermGens. Set the value of the environment variable as follows: - -[literal] -MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=512m" -/* syntax for setting varies on the OS used by the build machine.*/ - -* If you receive a Maven error when building northbound integration tests, you can skip building the tests by running the following command: - -[literal] -mvn clean install -DskipTests -/* instead of "mvn clean install" */ - -* If you have issues with maven needing a proxy, see http://www.mkyong.com/maven/how-to-enable-proxy-setting-in-maven/[How To Enable Proxy Setting In Maven]. - -=== Running the OpenDaylight controller - -. Run the following command: - -[literal] -cd controller/opendaylight/distribution/opendaylight/target/distribution.opendaylight-osgipackage/opendaylight/ -./run.sh - - -[start=2] -. Go to *http://localhost:8080/* and login in with username *admin* and password *admin*. - - -NOTE: For more information in running the controller, see the Installation Guide. - - -=== Pulling the code from the remote repository - -To pull the latest changes from the Git repository, run the following command: - -[literal] -git pull ssh://@git.opendaylight.org:29418/controller.git HEAD:refs/for/master - -=== Committing the code using the Developer Certificate of Origin - -Your contributions to the OpenDaylight code is accepted only if you attach the http://elinux.org/Developer_Certificate_Of_Origin[Developer Certificate Of Origin]. The certificate implies that you have made the changes and the work was done as part of an open-source license. - -To attach the certificate, run the command below: - -[literal] -git commit --signoff - -Or - -[literal] -git commit -s - -You are prompted for a commit message. If you are fixing an issue from Bugzilla, you can add the information to your commit message and it will get linked from Gerrit. - -[literal] -Fix for bug 2. -Signed-off-by: Ed Warnicke -# Please enter the commit message for your changes. Lines starting -# with '#' will be ignored, and an empty message aborts the commit. -# On branch master -# Changes to be committed: -# (use "git reset HEAD ..." to unstage) -# -# modified: README -# - -If you wish to add the signoff to the commit message on your every commit without the need to specify *--s* or *--signoff*, add the following lines in the end of *.git/hooks/commit-msg*, after the line *"add_ChangeId"*: - -[literal] -SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') -grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" - - -=== Pushing the code - -* To push your changes to the repository, run the command below: - -[literal] -git push ssh://@git.opendaylight.org:29418/controller.git HEAD:refs/for/master - -To push a draft that is not to be merged, run the command below: - -[literal] -git push ssh://@git.opendaylight.org:29418/controller.git HEAD:refs/drafts/master - -A message similar to the following is displayed: - -[literal] -remote: Resolving deltas: 100% (2/2) -remote: Processing changes: new: 1, refs: 1, done -remote: -remote: New Changes: -remote: http://git.opendaylight.org/gerrit/64 -remote: - -=== Reviewing and merging the code - -. Copy the link from the display message of your git push command and run it in a browser. -The link must display that the code is verified by the Jenkins Controller User and a link is provided to the Jenkins build. See the figure below. - -image::Jenkins_message.jpg[title="Code Changes in Gerrit", alt="Code Changes in Gerrit"] - - -[start=2] -. After your code is reviewed and submitted by a committer, it will be merged into the authoritative repository. See the figure below. - -image::merged_code.jpg[title="Merging Code in Gerrit", alt="Merging Code in Gerrit"] - -=== Troubleshooting blocked port 29418 - -There have been reports that many firewalls may block port 29418. To resolve the issue, use HTTP to clone the repository. - -[literal] -git clone https://@git.opendaylight.org/gerrit/p/controller.git - -You are prompted for the password you generated in https://wiki.opendaylight.org/view/OpenDaylight_Controller:Setting_up_HTTP_in_Gerrit[Setting up HTTP in Gerrit]. - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/manuals/developer-guide/src/main/asciidoc/core/odl-controller-run.adoc b/manuals/developer-guide/src/main/asciidoc/core/odl-controller-run.adoc deleted file mode 100644 index f5b46f9e5..000000000 --- a/manuals/developer-guide/src/main/asciidoc/core/odl-controller-run.adoc +++ /dev/null @@ -1,87 +0,0 @@ -== Running the OpenDaylight controller - -NOTE: Download the latest build of the controller from https://jenkins.opendaylight.org/controller/job/controller-merge/lastSuccessfulBuild/artifact/opendaylight/distribution/opendaylight/target/[here]. The source code of the OpenDaylight controller is in a directory called opendaylight. In this directory (the corresponding directory in the git repository is usually the distribution/opendaylight/target/distribution.opendaylight-0.1.0-SNAPSHOT-osgipackage/opendaylight). - -NOTE: The controller platform has specific core bundles, each of which export important services through Java interfaces. Here is a brief list of important ones that come in handy while developing network services. These are located at https://wiki.opendaylight.org/view/Controller_Projects%27_Modules/Bundles_and_Interfaces[Controller Projects' Modules, Bundles, and Interfaces]. - -NOTE: For a list of files in OpenDaylight karaf, see https://wiki.opendaylight.org/view/Karaf_Distribution_Folder_and_File_Guide[Karaf Distribution Folder and File Guide]. - -Apache Karaf is a small OSGi based runtime which provides a lightweight container onto which various components and applications can be deployed. It tends to be helpful to think of Karaf as providing an ecosystem for an application where various libraries and frameworks are collected and tested that they work well together, simplifying your runtime experience. - -There are two ways to start the controller in Karaf. - -. Run the command below to access the Karaf console: - -[literal] - -bin/karaf - -. Run the command below to start Karaf as a background task, accessing the console using SSH: - -[literal] - -bin/start - -SSH is listening on 8101 and the default username and password is karaf/karaf. Run the command below to access the console - -[literal] -ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 8101 karaf@ - -To log out of the SSH shell, run the command below: - -[literal] -shell: logout - -==== Installing or uninstalling controller features - -Features that are installed as part of the karaf-compatible-all integration job include the following files: - -* odl-restconf -* odl-mdsal-apidocs -* odl-integration-compatible-with-l2switch - -Before starting karaf, you can edit the file *etc/org.apache.karaf.features.cfg* to install additional features. Modify the line `featuresBoot=config,standard,region,package,kar,ssh,management` to be `featuresBoot=config,standard,region,package,kar,ssh,management,odl-restconf,odl-mdsal-apidocs, odl-integration-compatible-with-l2switch` - - - -=== Karaf CLI - -* To list only installed features, run the command: - -[literal] - feature:list -i - - -* Filter with grep - -[literal] -feature:list | grep openflowplugin - -* List bundles loaded - -[literal] - bundle:list -s - -List web endpoints - -[literal] -web:list - - -Uninstall a feature - - -[literal] - feature:uninstall odl-l2switch-switch - - -=== Running the controller GUI - - -. Navigate to http://controller-ip:8080 to open the web interface, then use the following credentials to log in: - -** *User*: admin - -** *Password*: admin - - diff --git a/manuals/developer-guide/src/main/asciidoc/core/odl-controller-welcome_project.adoc b/manuals/developer-guide/src/main/asciidoc/core/odl-controller-welcome_project.adoc deleted file mode 100644 index 04ce48293..000000000 --- a/manuals/developer-guide/src/main/asciidoc/core/odl-controller-welcome_project.adoc +++ /dev/null @@ -1,46 +0,0 @@ -== Welcome to the OpenDaylight project - - -The Open Daylight Project is a collaborative open source project under the Linux foundation that aims to accelerate adoption of Software-Defined Networking (SDN) and create a solid foundation for Network Functions Virtualization (NFV) for a more transparent approach that fosters new innovation and reduces risk. Founded by industry leaders and open to all, the OpenDaylight community is developing a common, open SDN framework consisting of code and blueprints. - - -=== OpenDaylight project scope - -The projects chosen by the Technical Steering Committee (TSC) are limited to the following areas: - -* The OpenDaylight controller - -* Software for forwarding elements - -* Southbound plugins to enable the controller to speak to the OpenDaylight supplied and other network elements - -* Northbound plugins to expose interfaces to those writing applications to the controller - -* Network services and applications intended to run on top of the controller, integration between the controller and other elements - -* Support projects such as tools, infrastructure, or testing - -* Plugins for inter-controller communication - - -=== OpenDaylight project goals - -* *Code*: To create a robust, extensible, open source code base that covers the major common components required to build an SDN solution. - -* *Acceptance*: To get broad industry acceptance amongst vendors and users. - -* *Community*: To have a thriving and growing technical community contributing to the code base, using the code in commercial products, and adding value above, below and around. - -=== Additional information for the OpenDaylight project - -* For frequently asked questions about the OpenDaylight project, see the http://www.opendaylight.org/project/faq[FAQ]. - - -* You can join OpenDaylight as a user, developer, or as a member of the project. See the http://www.opendaylight.org/resources/getting-started-guide[ Getting Started with OpenDaylight]. - - -* Exhaustive information about OpenDaylight is available in the https://wiki.opendaylight.org/view/Main_Page[OpenDaylight Wiki]. - - - - diff --git a/manuals/developer-guide/src/main/asciidoc/core/odl-restconf-overview.adoc b/manuals/developer-guide/src/main/asciidoc/core/odl-restconf-overview.adoc deleted file mode 100644 index 773a1e538..000000000 --- a/manuals/developer-guide/src/main/asciidoc/core/odl-restconf-overview.adoc +++ /dev/null @@ -1,121 +0,0 @@ -== Overview of RESTCONF - -NOTE: Important characteristics of RESTCONF are described below. For more information, see the http://www.ietf.org/archive/id/draft-bierman-netconf-restconf-04.txt[RESTCONF Protocol]. - -* RESTCONF is a REST-like protocol that provides a programmatic interface over HTTP for accessing data defined in YANG, using the datastores defined in NETCONF. - -* RESTCONF is not intended to replace NETCONF, but rather provide an additional simplified interface that follows REST-like principles and is compatible with a resource-oriented device abstraction. - -* The RESTCONF protocol operates on a conceptual datastore defined with the YANG data modeling language. The server lists each YANG module it supports under “/restconf/modules” in the top-level API resource type, using a structure based on the YANG module capability URI format. - -* The conceptual datastore contents, data-model-specific operations and notification events are identified by the set of YANG module resources. All RESTCONF content identified as either a data resource, operation resource, or event stream resource is defined with the YANG language. - -* The classification of data as configuration or non-configuration is derived from the YANG “config” statement. Data ordering behavior is derived from the YANG “ordered-by” statement. - -* RESTCONF allows access to datastores located in the controller. There are two datastores -*Config* that contains data inserted via the controller and *Operational* that contains data inserted via the network. - -* RESTCONF listens on port 8080 for HTTP requests - -* RESTCONF supports OPTIONS, GET, PUT, POST, DELETE operations. - -* Request and response data can be in XML or JSON format. XML has structure according to yang by XML-YANG and JSON by JSON-YANG. - - -The NETCONF protocol defines configuration datastores and a set of Create, Retrieve, Update, Delete (CRUD) operations that can be used to access these datastores. For more information on NETCONF, see RFC6241. - -The YANG language defines the syntax and semantics of datastore content, operational data, protocol operations, and notification events. For more information on YANG, see RFC6020. - -The RESTCONF protocol uses HTTP methods to identify the CRUD operation requested for a particular resource. The following table shows how the RESTCONF operations relate to NETCONF protocol operations: - - -=== RESTCONF in OpenDaylight - -Restconf allows access to datastores in the controller. There are two datastores: - -* Config: Contains data inserted via controller - -* Operational: Contains other data - -NOTE: Each request must start with URI /restconf. Restconf listens on port 8080 for HTTP requests. - -Restconf supports `OPTIONS`, `GET`, `PUT`, `POST`, and `DELETE` operations. Request and response data can either be in the XML or JSON format. XML structures according to yang are defined at: http://tools.ietf.org/html/rfc6020[XML-YANG]. JSON structures are defined at: http://tools.ietf.org/html/draft-lhotka-netmod-yang-json-02[JSON-YANG]. Data in the request must have a correctly set “Content-Type” field in the http header with the allowed value of the media type. The media type of the requested data has to be set in the “Accept” field. Get the media types for each resource by calling the OPTIONS operation. - - -Most of the RESTCONF endpoints paths use Instance Identifier. is used in the explanation of the operations. - - -`` - - -* It must start with : where is a name of the module and is the name of a node in the module. It is sufficient to just use after :. Each has to be separated by /. - - -* can represent a data node which is a list or container yang built-in type. If the data node is a list, there must be defined keys of the list behind the data node name for example, //. - - -* The format : has to be used in this case as well: -Module A has node A1. Module B augments node A1 by adding node X. Module C augments node A1 by adding node X. Then for clarification it has to be known which node X is thought (e.g. C:X). - - -For more details about encoding see: http://tools.ietf.org/html/draft-bierman-netconf-restconf-02#section-5.3.1[Restconf 02 - Encoding YANG Instance Identifiers in the Request URI]. - -NOTE: A Node can be behind a mount point. In this case, the URI has to be in format /yang-ext:mount/. The first is the path to a mount point and the second is the path to a node behind the mount point. A URI can end in a mount point itself by using /yang-ext:mount. For more information, see https://wiki.opendaylight.org/view/OpenDaylight_Controller:Config:Examples:Netconf. - -NOTE: For more information on RESTCONF, see https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Restconf. - - -=== URLs exposed by RESTCONF in OpenDaylight - -* The RESTCONF API to access nodes in OpenDaylight inventory is http://:8080/restconf/operational/opendaylight-inventory:nodes/ - -* The RESTCONF API to access information of a particular node in OpenDaylight inventory is http://:8080/restconf/operational/opendaylight-inventory:nodes/node/id [replace id by the actual node id] - -* The RESTCONF API to access OpenDaylight topology information is http://:8080/restconf/operational/network-topology:network-topology/topology/flow:1 - -=== RESTCONF Northbound APIs for OpenDaylight controller - -Yang models are used in the MD-SAL and in MD-SAL-based applications to define all APIs such as inter-component APIs, plugin APIs, northbound APIs, etc. Yang models are used to generate Java APIs at compile time with OpenDaylight Yang Tools and to render REST APIs at run time according to the RESTCONF specification. Plugins designed for MD-SAL define yang models for their northbound REST APIs, which are then exposed to applications via an MD-SAL RESTCONF adapter. - - -image::SAL_nb_pugins.jpg[title="SAL Northbound Examples", alt="SAL Northbound Plugin Examples"] - - -=== Writing a new application for OpenDaylight - -. Download the OpenDaylight VM and set up the controller. For more information, see the Installation Guide for the OpenDaylight controller. - -. Update the dependencies and services exported in the new bundle's pom.xml. - -. List dependencies imported and interfaces implemented in the module's activator.java. - -. Update set or unset bindings in the module's class so as to access other bundle objects. - -. Implement the interface functions to handle the async events or use other bundle objects to edit the state. - -. Add the required northbound REST API and associate with the web bundle. - - -=== Creating a new northbound REST bundle - - -The easiest way of introducing a new northbound REST API is to copy an existing one and making the relevant changes as below: - -. pom.xml – update the artifact-name , Web-ContextPath and dependencies. - -. enunciate.xml – update the defaultRestSubContext and the description. - -. src/main/java/…/*Northbound*.java – Rename/Update the request handler and the necessary logic as required. - -. src/main/test/… - Add necessary unit tests. - - -. commons/northbound-integrationtest module - Add necessary integration tests. - -. Reference the bundle from the distribution assembly descriptor to be included in the distribution. - - - - - - diff --git a/manuals/developer-guide/src/main/asciidoc/core/odl-restreference-authentication.adoc b/manuals/developer-guide/src/main/asciidoc/core/odl-restreference-authentication.adoc deleted file mode 100644 index 14ec574c3..000000000 --- a/manuals/developer-guide/src/main/asciidoc/core/odl-restreference-authentication.adoc +++ /dev/null @@ -1,6 +0,0 @@ -== OpenDaylight controller REST reference and authentication - -You can locate the REST API reference information for each of the modules by navigating to the northbound module directories in your installation. The OpenDaylight Controller REST API contains the following modules. The associated module directory for the API reference content is listed: - -For more information, see https://wiki.opendaylight.org/view/OpenDaylight_Controller:REST_Reference_and_Authentication. - diff --git a/manuals/developer-guide/src/main/asciidoc/core/using_mininet.adoc b/manuals/developer-guide/src/main/asciidoc/core/using_mininet.adoc deleted file mode 100644 index a26757ef1..000000000 --- a/manuals/developer-guide/src/main/asciidoc/core/using_mininet.adoc +++ /dev/null @@ -1,151 +0,0 @@ -=== Using Mininet - -Mininet creates a realistic virtual network, running real kernel, switch and application code, on a single machine (VM, cloud or native) with a single command and within a short time. Using Mininet, you can easily interact with your network using the Mininet CLI (and API), customize it, share it with others, or deploy it on real hardware, Mininet is useful for development, teaching, and research. - -Mininet is also a great way to develop, share, and experiment with OpenFlow and Software-Defined Networking systems. - -NOTE: To know more about Mininet, see http://mininet.org/walkthrough/[Mininet Walkthrough]. - -To use Mininet for OpenDaylight, - -. Download http://mininet.github.com/download/[Mininet] . OpenDaylight controller is tested against the Mininet VM (Option 1). It has not been tested against other Mininet installation options. - -. Launch the Mininet VM with VirtualBox or another virtualization application. - -. Log on to the Mininet VM with the following credentials: - -*** *user*: mininet - -*** *password*: mininet - -. Determine the IP address of the server hosting the OpenDaylight controller, and use it to start a virtual network by running the following command: - -[literal] - -sudo mn --controller=remote,ip=controller-ip --topo tree,3 - -Mininet connects to OpenDaylight controller and sets up a three-level tree topology. - - -[literal] -mininet@mininet-vm:~$ sudo mn --controller=remote,ip=172.16.102.161 --topo tree,3 -*** Creating network -*** Adding controller -*** Adding hosts: -h1 h2 h3 h4 h5 h6 h7 h8 -*** Adding switches: -s1 s2 s3 s4 s5 s6 s7 -*** Adding links: -(h1, s3) (h2, s3) (h3, s4) (h4, s4) (h5, s6) (h6, s6) (h7, s7) (h8, s7) (s1, s2) (s1, s5) (s2, s3) (s2, s4) (s5, s6) (s5, s7) -*** Configuring hosts -h1 h2 h3 h4 h5 h6 h7 h8 -*** Starting controller -*** Starting 7 switches -s1 s2 s3 s4 s5 s6 s7 -*** Starting CLI: -mininet> - -NOTE: See the http://mininet.github.com/walkthrough/Mininet[Mininet Walkthrough] for a more detailed explanation of Mininet configuration options. There is an appendix that explains how to configure Mininet to use a remote controller. - -=== Troubleshooting Mininet - -If you are running VirtualBox on the same host or desktop where the controller is running, and trying to start the virtual network on Mininet VM, the following error is displayed `"Unable to contact the remote controller at ...",` then the following steps resolves the issue: - -. In VirtualBox, go to File > Preferences > Network and make sure you have at least one interface defined as *Host-Only*. Lets say its name is `vboxnet0`. - -. In VirtualBox > Mininet VM > Settings > Network, check that the adapter is of type *Host-Only*, and is connected to the interface from item 1 `(vboxnet0)`. - -. On your host where the controller and VirtualBox run, run the `ifconfig` command to display all network interfaces on the machine. - -Search for the interface as in item 1 (`vboxnet0` in our example). Take the ip address specified (most probably 192.168.56.1 - default), and use that as the correct remote controller ip address when starting a VM in mininet as stated in the example above (--controller=remote,ip=192.168.56.1). - -. If you are still not able to connect, you might want to consider temporarily disabling firewall on the host running the controller (on Linux, for example, `iptables -F` will do the job). - -. Sometimes, the way you start the mininet is can be an issue. It does not give an error, but does not connect to the remote server either. Here is such an example: - -[literal] -sudo mn --topo=tree,3 --mac --switch=ovsk --controller=remote, ip=192.168.16.10 - -Here is the correct example: - -[literal] -sudo mn --topo=tree,3 --mac --switch=ovsk --controller=remote,ip=192.168.16.10 - -NOTE: The difference is the "SPACE" between "remote," and "ip". - -If Mininet crashes or if you lose your console from a remote connection, the switches remain configured in the database. Run the following command to clean up: - -[literal] - -$ sudo mn -c - -=== Resetting Mininet - -Here's a perl from the appendix mentioned above: - -If Mininet crashes or if you lose your console from a remote connection, the switches remain configured in the database and you'll want to clean them up. - -[literal] - -$ sudo mn -c - - - -=== Using the Simple Forwarding Application - -The OpenDaylight Controller includes an application called Simple Forwarding that lets you use the basic services for making forwarding decisions and install flows across all devices on the OpenFlow network. This application discovers the presence of a host via ARP message and installs dest-only /32 entries across all switches in the network, with the corresponding output ports toward the host. - -. With OpenDaylight Controller and Mininet running as described in previous sections, log into the web interface. - -image::Devices1.jpg[title="OpenDaylight GUI", alt="OpenDaylight GUI"] - -[start=2] -. Drag and drop devices to organize the topology into its logical arrangement, then save the configuration. - -image::Devices2.jpg[title="Clicking Save", alt="Clicking Save"] - - -[start=3] -. Click the *Add Gateway IP Address* (shown in the figure above) and add the IP and subnet of `10.0.0.254/8`. - - -image::GatewayIP.jpg[title="Adding the Gateway IP Address", alt="Adding the Gateway IP Address"] - -[start=4] -. Confirm that hosts are now reachable from one another. On the console where Mininet is running, have one host ping another. - -[literal] - -mininet> h1 ping h7 -PING 10.0.0.7 (10.0.0.7) 56(84) bytes of data. -64 bytes from 10.0.0.7: icmp_req=1 ttl=64 time=1.52 ms -64 bytes from 10.0.0.7: icmp_req=2 ttl=64 time=0.054 ms -64 bytes from 10.0.0.7: icmp_req=3 ttl=64 time=0.060 ms -64 bytes from 10.0.0.7: icmp_req=4 ttl=64 time=0.052 ms ---- 10.0.0.7 ping statistics --- -4 packets transmitted, 4 received, 0% packet loss, time 2999ms -rtt min/avg/max/mdev = 0.052/0.422/1.523/0.635 ms -mininet> - -[start=5] -. Click the *Troubleshooting* tab and then load the *Flows* for one of the switches. - -image::FlowStatitistics.jpg[title="Flow statistics", alt="Flow statistics"] - - -[start=6] -. View the *Ports* details. -image::PortsStatistics.jpg[title="Port Statistics", alt="Port Statistics"] - - -[start=7] -. On the OSGI console, type `ss simple`. You will see that the Simple Forwarding application is ACTIVE. - -[literal] -osgi> ss simple -"Framework is launched." -id State Bundle -45 ACTIVE org.opendaylight.controller.samples.simpleforwarding_0.4.0.SNAPSHOT - - - diff --git a/manuals/developer-guide/src/main/asciidoc/didm/didm-dev.adoc b/manuals/developer-guide/src/main/asciidoc/didm/didm-dev.adoc deleted file mode 100644 index 1a8866b27..000000000 --- a/manuals/developer-guide/src/main/asciidoc/didm/didm-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== DIDM Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/didm-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/dlux/dlux-core-dev.adoc b/manuals/developer-guide/src/main/asciidoc/dlux/dlux-core-dev.adoc deleted file mode 100644 index 673e8aecb..000000000 --- a/manuals/developer-guide/src/main/asciidoc/dlux/dlux-core-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== DLUX - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/dlux.html diff --git a/manuals/developer-guide/src/main/asciidoc/faas/odl-faas-dev.adoc b/manuals/developer-guide/src/main/asciidoc/faas/odl-faas-dev.adoc deleted file mode 100644 index 6ed0bdcc3..000000000 --- a/manuals/developer-guide/src/main/asciidoc/faas/odl-faas-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== Fabric As A Service - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/fabric-as-a-service.html diff --git a/manuals/developer-guide/src/main/asciidoc/iotdm/iotdm-dev.adoc b/manuals/developer-guide/src/main/asciidoc/iotdm/iotdm-dev.adoc deleted file mode 100644 index c64e7546e..000000000 --- a/manuals/developer-guide/src/main/asciidoc/iotdm/iotdm-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== IoTDM Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/iotdm-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/l2switch/l2switch-dev.adoc b/manuals/developer-guide/src/main/asciidoc/l2switch/l2switch-dev.adoc deleted file mode 100644 index 3fbc9deaa..000000000 --- a/manuals/developer-guide/src/main/asciidoc/l2switch/l2switch-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== L2Switch Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/l2switch-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/lacp/lacp-dev.adoc b/manuals/developer-guide/src/main/asciidoc/lacp/lacp-dev.adoc deleted file mode 100644 index 726c9837f..000000000 --- a/manuals/developer-guide/src/main/asciidoc/lacp/lacp-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== LACP Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/lacp-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/natapp/odl-natapp-dev.adoc b/manuals/developer-guide/src/main/asciidoc/natapp/odl-natapp-dev.adoc deleted file mode 100644 index 88b3846b4..000000000 --- a/manuals/developer-guide/src/main/asciidoc/natapp/odl-natapp-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== NATApp Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/natapp-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/netide/netide-developer-guide.adoc b/manuals/developer-guide/src/main/asciidoc/netide/netide-developer-guide.adoc deleted file mode 100644 index e83e7e9e6..000000000 --- a/manuals/developer-guide/src/main/asciidoc/netide/netide-developer-guide.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== NetIDE Developer Guide == - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/netide-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/neutron/neutron.adoc b/manuals/developer-guide/src/main/asciidoc/neutron/neutron.adoc deleted file mode 100644 index 03962f88e..000000000 --- a/manuals/developer-guide/src/main/asciidoc/neutron/neutron.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== Neutron Northbound - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/neutron-northbound.html diff --git a/manuals/developer-guide/src/main/asciidoc/neutron/odl-neutron-service-dev.adoc b/manuals/developer-guide/src/main/asciidoc/neutron/odl-neutron-service-dev.adoc deleted file mode 100644 index a01d4a451..000000000 --- a/manuals/developer-guide/src/main/asciidoc/neutron/odl-neutron-service-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== Neutron Service Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/neutron-service-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/nic/nic-dev.adoc b/manuals/developer-guide/src/main/asciidoc/nic/nic-dev.adoc deleted file mode 100644 index 72848362f..000000000 --- a/manuals/developer-guide/src/main/asciidoc/nic/nic-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== Network Intent Composition (NIC) Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/network-intent-composition-(nic)-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/ocpplugin/ocp-developer-guide.adoc b/manuals/developer-guide/src/main/asciidoc/ocpplugin/ocp-developer-guide.adoc deleted file mode 100644 index 5d1538fa5..000000000 --- a/manuals/developer-guide/src/main/asciidoc/ocpplugin/ocp-developer-guide.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== OCP Plugin Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/ocp-plugin-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/odl-controller-controller-overview.adoc b/manuals/developer-guide/src/main/asciidoc/odl-controller-controller-overview.adoc deleted file mode 100644 index 8123077e2..000000000 --- a/manuals/developer-guide/src/main/asciidoc/odl-controller-controller-overview.adoc +++ /dev/null @@ -1,251 +0,0 @@ -== OpenDaylight controller overview - -The OpenDaylight controller is a JVM software and can be run from any operating system and hardware as long as it supports Java. It is a implementation of the concept of Software Defined Network (SDN). - -=== Background to the emergence of SDN - -Current generation networks and architectures are statically configured and vertically integrated. New generation applications require networks to be agile and flexibly adapt to application requirements. As networks get larger, especially in massively scalable datcenters and cloud, there is a large requirement for ease-of-management and orchestration. - -The following are the requirements of modern consumers of the networking industry: - - -* *Agile networks*: As application programmers require their applications to be moved around in a datacenter or across clouds, it becomes imperative that the network becomes agile in meeting the requirements (bandwidth, services like load balancing, firewall) of the applications. - -* *Vendor neutrality*: Network abstraction and virtualization is required as it allows the network operators to operate the network at a higher level without worrying about the quirkiness of different products from the same or different vendors. - - -* *Ease of building new applications*: Network operators require that they be able to influence the forwarding and other network behavior based on their own algorithms and business logic. That means there is a need for the network to not be vertically integrated with the networking control logic coming only from the networking vendor. - - -=== SDN architecture principles - -SDN consists of a network applications layer on the top written to open API. There is a controller in the middle interacting with and managing network devices. Clearly there needs to be some sort of API or protocol needed for the controller and the network devices to communicate with each other. OpenFlow is one such protocol which has come out of the efforts of Open Networking Foundation (ONF). The network devices support agents which interpret the protocol and the API. - - -Central to the SDN effort is the controller which provides the ability to deploy software to control the network gear and redeploy as needed. The vision is to have a modular controller with a well published Northbound API for network applications to write towards while utilizing southbound protocols such as OpenFlow to communicate with supported downstream network nodes. The industry and end users will benefit immensely by having an OpenSource controller with contributions from various industry players. - -The OpenDaylight controller supports not only the OpenFlow protocol but also other open protocols to allow communication with devices which have OpenFlow and/or respective agents. It also includes Northbound APIs to allow customer applications (software) to work with the controller in controlling the network. The customer applications cover a wide spectrum of solutions for solving customer needs across different vertical market segments. - -The controller architecture supports both the hybrid switch model as well as the classical OpenFlow model of having a fully centralized control plane. - -=== OpenDaylight controller framework - -The following image shows the framework of the OpenDaylight controller. - - -image::odl-framework.jpg[title="Framework of OpenDaylight", alt="Framework of OpenDaylight"] - -OpenDaylight uses the following tools or paradigms: - -* *Maven*: OpenDaylight uses Maven for easier build automation. Maven uses pom.xml (Project Object Model) to script the dependencies between bundle and also to describe what bundles to load and start. - -* *OSGi*: This framework is the back-end of OpenDaylight as it allows dynamically loading bundles and packages JAR files, and binding bundles together for exchanging information. - -* *JAVA interfaces*: Java interfaces are used for event listening, specifications, and forming patterns. This is the main way in which specific bundles implement call-back functions for events and also to indicate awareness of specific state. - -* *REST APIs*: These are northbound APIs such as topology manager, host tracker, flow programmer, static routing, and so on. - -The controller exposes open northbound APIs which are used by applications. The OSGi framework and bidirectional REST are supported for the northbound APIs. The OSGi framework is used for applications that run in the same address space as the controller while the REST (web-based) API is used for applications that do not run in the same address space (or even the same system) as the controller. The business logic and algorithms reside in the applications. These applications use the controller to gather network intelligence, run its algorithm to do analytics, and then orchestrate the new rules throughout the network. - -On the southbound, multiple protocols are supported as plugins, e.g. OpenFlow 1.0, OpenFlow 1.3, BGP-LS, and so on. The OpenDaylight controller starts with an OpenFlow 1.0 southbound plugin. Other OpenDaylight contributors begin adding to the controller code. These modules are linked dynamically into a *Service Abstraction Layer* (SAL). - -The SAL exposes services to which the modules north of it are written. The SAL figures out how to fulfil the requested service irrespective of the underlying protocol used between the controller and the network devices. This provides investment protection to the applications as OpenFlow and other protocols evolve over time. For the controller to control devices in its domain, it needs to know about the devices, their capabilities, reachability, and so on. This information is stored and managed by the *Topology Manager*. The other components like ARP handler, Host Tracker, Device Manager, and Switch Manager help in generating the topology database for the Topology Manager. - -The controller has a built in GUI. The GUI is implemented as an application using the same Northbound API as would be available for any other user application. - -See the sections below for an overview of the main components of the OpenDaylight controller. - -=== Service Abstraction Layer framework - -Service Abstraction Layer (SAL) is at the heart of the modular design of the controller and allows it to support multiple protocols on the southbound. SAL also provides consistent services for modules and applications where the business logic is embedded. - -image::SAL.jpg[title="Framework of SAL", alt="Framework of SAL"] - -The OSGi framework allows dynamically linking plugins for the evolving southbound protocols. The SAL provides basic services such as device discovery which is used by modules like Topology Manager to build the topology and device capabilities. Services are constructed using the features exposed by the plugins (based on the presence of a plugin and capabilities of a network device). Based on the service request, the SAL maps to the appropriate plugin and uses the most appropriate southbound protocol to interact with a given network device. Each plugin is independent of others and is loosely coupled with the SAL. - -NOTE: The OpenFlow 1.0 plugin is currently provided with OpenDaylight and other plugins shown in the images are examples of the extensibility of the SAL framework. The SAL framework is included in the OpenDaylight controller contribution. - -=== SAL architecture - - -image::sal_architecture.jpg[title="SAL system architecture", alt="SAL system architecture"] - - -The subsystems in the above figure are as follows: - -* *Provider*: A component that exhibits functionality to applications and other providers (plugins) through its northbound API. A provider can be a consumer of other providers. There are two types of providers: - -** *Binding Independent Providers*: Their functionality is exhibited in the binding-independent Data DOM format. - -** *Binding Aware Providers*: Their functionality is exposed in a format compiled against one or more generated binding interfaces. - -* *Consumer*: A component that consumes functionality provided by one or more providers. There are two types of consumers: - -** *Binding Independent Consumers*: Their functionality is consumed in the binding-independent Data DOM format. - -** *Binding Independent Consumers*: Their functionality is consumed using one or more generated binding interfaces. - -* *Binding Independent Broker*: The core component of the model-driven SAL. It routes RPCs, notifications and data changes between various providers and consumers. - -* *Binding Aware Broker*: Provides programmatic APIs and Java language support to both consumers such as controller applications or plugins and providers. It is a façade or proxy built on top of the Binding Independent Broker that simplifies access to data and services provided by Binding-Independent providers and Binding-Aware providers. - - -* *BI Data Repository*: A binding-independent infrastructure component of SAL that is responsible for storage of configuration and transient data. - -* *Binding Schema Repository*: An infrastructure component responsible for storing specifications of YANG–Java relationships and mapping between language-binding APIs to binding-independent API calls. - -* *Binding Generator*: A SAL infrastructure component which generates implementations of binding interfaces and data mappers to the binding-independent format. - -=== SAL architecture subsystems - -In context of the controller architecture, two subsystem categories are defined: - - -* *Top-Level Subsystems*: Subsystems such as a data store, or a validator. There is typically only a single instance of a top-level subsystem per API revision. Top-level subsystems can be controller components or applications (providers or consumers) deployed in the controller that use the controller SAL to communicate with other controller components, applications, and plugins. -Top-Level Subsystems usually have either a single instance per system or API, or multiple versioned instances, where each instance is unique to a revision of the contract defined by YANG models. In the latter case, each instance represents a single closed system. Prime examples for top-level subsystem are brokers and data repositories. - -* *Nested Subsystems*: A subsystem which could be local or remote. It can expose a set of functionality at multiple places or in multiple instances. A network element, such as a router or switch, is an example of a nested subsystem. Data of a nested subsystem is attached or mounted under a node in the controller’s datastore. The data in a nested subsystem may represent data present in another system or in a local controller component, such as a plugin. It may also be dynamically generated by a controller component, or translated from other protocols. - -NOTE: Consumers may need to invoke the functionality provided by nested subsystems. An RPC Broker must provide functionality that enableS nested RPC functionality in Providers. Furthermore, a Broker must be able to route RPCs to the Providers of nested subsystems for further processing. - - -=== SAL service sets - -* *Topology services* is a set of services that allow to convey topology information such as discovering a new node, a new link, and so on. - -* *Data Packet services* are SAL services that deliver the packets coming from the agents to applications. - -* *Flow Programming services* provide the necessary logic to program different match-actions rules. - -* *Statistics services* export APIs to collect statistics per flow, node connector, queue, and so on. - -* *Inventory services* provide APIs for returning inventory information about the node and node connectors for example. - -* *Resource services* is a placeholder to query resource status. - - -==== Data packet service as example of SAL service implementation - -As an example of a SAL service implementation, see the Data Packet Service with OpenFlow 1.0 plugin in the section below. - -image::data_packet_service.jpg[title="Data packet service ", alt="Data packet service"] - - -* *IListenDataPacket* is a service implemented by the upper layer module or application (ARP Handler is one such module) which wants to receive data packets. - - -* *IDataPacketService* is an interface that provides the service of sending and receiving packets from the agent. This service is registered in the OSGi service registry so that an application can retrieve it. - -* *IPluginOutDataPacketService* is an interface that is exported by SAL when a protocol plugin wants to deliver a packet toward the application layer. - -* *IPluginInDataPacketService* is an interface that is exported by the protocol plugin and is used to send out the packets through SAL towards the agent on the network devices. - -The process followed by the SAL is described as follows: - -. The OpenFlow plugin receives an ARP packet that must be dispatched to the ARP handler application. - -. The OpenFlow Plugin calls *IPluginOutDataPacketService* to get the packet to the SAL. - -. The ARP handler application is registered to the *IListenDataPacket Service*. The SAL hands over the packet to the ARP handler application. - - -. The application now processes the packet. - - -For the reverse process of the application sending a packet out, the process followed is described below: - -. The application constructs the packet and calls the interface *IDataPacketService* to send the packet. The destination network device is to be provided as part of the API. - -. SAL calls the *IPluginInDataPacketService* interface for a given protocol plugin based on the destination network device, the protocol is OpenFlow in this case. - -. The protocol plugin then ships the packet to the appropriate network element. The plugin handles all protocol-specific processing. - -NOTE: For more information on other service sets, see the Java and API documentation. - -=== Northbound and southbound plugins - -See the images below for examples of SAL northbound and southbound plugins. - -image::SAL_NB_Plugins.jpg[title="SAL northbound plugins", alt="SAL northbound plugins"] - - -image::SAL_sb.jpg[title="SAL southbound plugins", alt="SAL southbound plugins"] - -=== OpenDaylight modules - -The following are the OpenDaylight modules. See the relevant sections for an overview of each module. - -* AD-SAL - API-Driven Service Abstraction Layer - -* AD-SAL Network Service Functions for OpenFlow-capable nodes: - -** Switch Manager - -** Statistics Manager - -** Host Tracker - -** ARP Handler - -** Forwarding Rules Manager (FRM) - -** Topology Manager - -* Clustering and High-Availability Services for AD-SAL - -* MD-SAL - Model-Driven Service Adaptation Layer - -* MD-SAL Base Network Functions: - -** Topology Exporters - -** Inventory Managers - -* MD-SAL Network Service Functions for OpenFlow-capable nodes: - -** Forwarding Rules Manager (FRM) - -** Statistics Manager - -* MD-SAL NETCONF Connector (Southbound RESTCONF Plugin) - -* MD-SAL RESTCONF Connector (Northbound NETCONF Plugin) - an infrastructure component that renders REST APIs for device/service models loaded into the controller - -* Config Subsystem - NETCONF/YANG based framework for configuration, performance and fault management of controller infrastructure and plugins deployed into the controller - -* NSF Adapters - Network Service Function Adapter that allow the MD-SAL based OF1.0/1.3 Plugin to talk with AS-SAL based Network Service Functions - - -=== OpenDaylight controller GUI - -The GUI is implemented as an application and uses the northbound REST API to interact with the other modules of the controller. The architecture thus ensures that whatever is available with the GUI is also available using the REST API. The controller can be integrated easily into other management or orchestration systems. - -=== High Availability - -The OpenDaylight controller supports a cluster-based high availability model. There are several instances of the OpenDaylight controller which logically act as one logical controller. This not only gives redundancy but also allows a scale-out model for linear scalability. To make the controller highly available, resilience needs to be added at the controller, OpenFlow-enabled switches, and the applications. - -The OpenFlow enabled switches connect to two or more instances of the controller using persistent point-to-point TCP/IP connection. On the northbound side, between the controller and the applications, the interaction is done using RESTful webservices. This is applicable for all the request-response types of interaction. The interactions based on HTTP and being HTTP based on non-persistent connections between the server and the client, it's possible to leverage all the high-available techniques used to give resilience on the web such as: - -* Providing the cluster of controller with a virtual IP to be reached using an anycast type of solution - - -* Having the application to talk to the cluster after a DNS request is done using a DNS round-robin technique - -* Deploying between the applications and the cluster of controller an HTTP load-balancer that can not only provide resilience but also distributed the workload accordingly to the URL requested. - -The interaction between the controller(s) and the Open-Flow enabled switches is essentially to have one Openflow switch multi-homed to multiple controller, so if one of the controller goes down another is ready to control the switch. This interaction has already been specified in the OpenFlow 1.2 specifications in particular Section 6.3 of Openflow 1.2 specifications. To summarize it when having multiple controllers connected to one switch, the openflow 1.2 specification specify two mode of operations: - -* Equal interaction: in this case all the controllers have read/write access to the switch, which means they have to syncronize in order no to step on each other feet. - - -* Master/Slave interaction: in this case there will be one master and multiple slaves (there could be still multiple equal as well) - - -For more information, see the OpenDaylight wiki. - - - - - - - diff --git a/manuals/developer-guide/src/main/asciidoc/odlparent/odlparent-developer.adoc b/manuals/developer-guide/src/main/asciidoc/odlparent/odlparent-developer.adoc deleted file mode 100644 index 6d3df5e3c..000000000 --- a/manuals/developer-guide/src/main/asciidoc/odlparent/odlparent-developer.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== ODL Parent Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/odl-parent-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/of-config/of-config-dev.adoc b/manuals/developer-guide/src/main/asciidoc/of-config/of-config-dev.adoc deleted file mode 100755 index f95906792..000000000 --- a/manuals/developer-guide/src/main/asciidoc/of-config/of-config-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== OF-CONFIG Developer Guide == - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/of-config-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/openflowjava/odl-openflowjava-protocol-dev.adoc b/manuals/developer-guide/src/main/asciidoc/openflowjava/odl-openflowjava-protocol-dev.adoc deleted file mode 100644 index 86ab46928..000000000 --- a/manuals/developer-guide/src/main/asciidoc/openflowjava/odl-openflowjava-protocol-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== OpenFlow Protocol Library Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/openflow-protocol-library-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/openflowplugin/odl-ofp-developer-guide.adoc b/manuals/developer-guide/src/main/asciidoc/openflowplugin/odl-ofp-developer-guide.adoc deleted file mode 100644 index 52fc8ab36..000000000 --- a/manuals/developer-guide/src/main/asciidoc/openflowplugin/odl-ofp-developer-guide.adoc +++ /dev/null @@ -1,4 +0,0 @@ -[[openflow-plugin-project-developer-guide]] -== OpenFlow Plugin Project Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/openflow-plugin-project-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/opflex/agent-ovs-dev.adoc b/manuals/developer-guide/src/main/asciidoc/opflex/agent-ovs-dev.adoc deleted file mode 100644 index 672d8c0a0..000000000 --- a/manuals/developer-guide/src/main/asciidoc/opflex/agent-ovs-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== OpFlex agent-ovs Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/opflex-agent-ovs-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/opflex/genie-dev.adoc b/manuals/developer-guide/src/main/asciidoc/opflex/genie-dev.adoc deleted file mode 100644 index 1d267fb0a..000000000 --- a/manuals/developer-guide/src/main/asciidoc/opflex/genie-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== OpFlex genie Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/opflex-genie-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/opflex/libopflex-dev.adoc b/manuals/developer-guide/src/main/asciidoc/opflex/libopflex-dev.adoc deleted file mode 100644 index 168791d23..000000000 --- a/manuals/developer-guide/src/main/asciidoc/opflex/libopflex-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== OpFlex libopflex Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/opflex-libopflex-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/ovsdb/ovsdb-developer.adoc b/manuals/developer-guide/src/main/asciidoc/ovsdb/ovsdb-developer.adoc deleted file mode 100644 index 2d8ffe6ae..000000000 --- a/manuals/developer-guide/src/main/asciidoc/ovsdb/ovsdb-developer.adoc +++ /dev/null @@ -1,4 +0,0 @@ -== OVSDB NetVirt - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/ovsdb-netvirt.html - diff --git a/manuals/developer-guide/src/main/asciidoc/packetcable/packetcable-dev.adoc b/manuals/developer-guide/src/main/asciidoc/packetcable/packetcable-dev.adoc deleted file mode 100644 index 19b761c0a..000000000 --- a/manuals/developer-guide/src/main/asciidoc/packetcable/packetcable-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== PacketCable Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/packetcable-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/sdninterfaceapp/odl-sdninterfaceapp-all-dev.adoc b/manuals/developer-guide/src/main/asciidoc/sdninterfaceapp/odl-sdninterfaceapp-all-dev.adoc deleted file mode 100755 index 5364d48a0..000000000 --- a/manuals/developer-guide/src/main/asciidoc/sdninterfaceapp/odl-sdninterfaceapp-all-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== ODL-SDNi Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/odl-sdni-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/sfc/sfc.adoc b/manuals/developer-guide/src/main/asciidoc/sfc/sfc.adoc deleted file mode 100644 index 62a4ca87b..000000000 --- a/manuals/developer-guide/src/main/asciidoc/sfc/sfc.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== Service Function Chaining - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/alto-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/snbi/odl-snbi-dev.adoc b/manuals/developer-guide/src/main/asciidoc/snbi/odl-snbi-dev.adoc deleted file mode 100644 index 17bf7dc94..000000000 --- a/manuals/developer-guide/src/main/asciidoc/snbi/odl-snbi-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== SNBI Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/snbi-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/snmp4sdn/snmp4sdn-developer.adoc b/manuals/developer-guide/src/main/asciidoc/snmp4sdn/snmp4sdn-developer.adoc deleted file mode 100644 index d9ee11fbb..000000000 --- a/manuals/developer-guide/src/main/asciidoc/snmp4sdn/snmp4sdn-developer.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== SNMP4SDN Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/alto-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/sxp/odl-sxp-dev.adoc b/manuals/developer-guide/src/main/asciidoc/sxp/odl-sxp-dev.adoc deleted file mode 100644 index 459c0fc00..000000000 --- a/manuals/developer-guide/src/main/asciidoc/sxp/odl-sxp-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== SXP Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/sxp-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/topoprocessing/odl-topoprocessing-framework-dev.adoc b/manuals/developer-guide/src/main/asciidoc/topoprocessing/odl-topoprocessing-framework-dev.adoc deleted file mode 100644 index 0316cf4fe..000000000 --- a/manuals/developer-guide/src/main/asciidoc/topoprocessing/odl-topoprocessing-framework-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== Topology Processing Framework Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/topology-processing-framework-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/ttp/ttp-cli-tools-dev.adoc b/manuals/developer-guide/src/main/asciidoc/ttp/ttp-cli-tools-dev.adoc deleted file mode 100644 index 243c133a7..000000000 --- a/manuals/developer-guide/src/main/asciidoc/ttp/ttp-cli-tools-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== TTP CLI Tools Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/ttp-cli-tools-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/ttp/ttp-model-dev.adoc b/manuals/developer-guide/src/main/asciidoc/ttp/ttp-model-dev.adoc deleted file mode 100644 index 1b9528b60..000000000 --- a/manuals/developer-guide/src/main/asciidoc/ttp/ttp-model-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== TTP Model Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/ttp-model-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/unimgr/odl-unimgr-channel-dev.adoc b/manuals/developer-guide/src/main/asciidoc/unimgr/odl-unimgr-channel-dev.adoc deleted file mode 100644 index 1d3d8753e..000000000 --- a/manuals/developer-guide/src/main/asciidoc/unimgr/odl-unimgr-channel-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== UNI Manager Plug-In Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/uni-manager-plug-in-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/usc/odl-usc-channel-dev.adoc b/manuals/developer-guide/src/main/asciidoc/usc/odl-usc-channel-dev.adoc deleted file mode 100644 index 31a440aef..000000000 --- a/manuals/developer-guide/src/main/asciidoc/usc/odl-usc-channel-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== Unified Secure Channel - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/unified-secure-channel.html diff --git a/manuals/developer-guide/src/main/asciidoc/usecplugin/odl-usecplugin-aaa-dev.adoc b/manuals/developer-guide/src/main/asciidoc/usecplugin/odl-usecplugin-aaa-dev.adoc deleted file mode 100644 index 17ff08ccd..000000000 --- a/manuals/developer-guide/src/main/asciidoc/usecplugin/odl-usecplugin-aaa-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== Usecplugin-AAA Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/usecplugin-aaa-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/usecplugin/odl-usecplugin-openflow-dev.adoc b/manuals/developer-guide/src/main/asciidoc/usecplugin/odl-usecplugin-openflow-dev.adoc deleted file mode 100644 index 250f87f72..000000000 --- a/manuals/developer-guide/src/main/asciidoc/usecplugin/odl-usecplugin-openflow-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== Usecplugin-OpenFlow Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/usecplugin-openflow-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/vtn/vtn-dev.adoc b/manuals/developer-guide/src/main/asciidoc/vtn/vtn-dev.adoc deleted file mode 100644 index 2a339f91b..000000000 --- a/manuals/developer-guide/src/main/asciidoc/vtn/vtn-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== Virtual Tenant Network (VTN) - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/virtual-tenant-network-(vtn)-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/yang-push/odl-yang-push-dev.adoc b/manuals/developer-guide/src/main/asciidoc/yang-push/odl-yang-push-dev.adoc deleted file mode 100644 index 47876516a..000000000 --- a/manuals/developer-guide/src/main/asciidoc/yang-push/odl-yang-push-dev.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== YANG-PUSH Developer Guide - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/yang-push-developer-guide.html diff --git a/manuals/developer-guide/src/main/asciidoc/yangtools/yangtools.adoc b/manuals/developer-guide/src/main/asciidoc/yangtools/yangtools.adoc deleted file mode 100644 index 43aa90b62..000000000 --- a/manuals/developer-guide/src/main/asciidoc/yangtools/yangtools.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== YANG Tools - -This content has been migrated to: http://docs.opendaylight.org/en/stable-boron/developer-guide/yang-tools.html diff --git a/manuals/developer-guide/src/main/resources/images/800p_OpenDaylight_Login.jpg b/manuals/developer-guide/src/main/resources/images/800p_OpenDaylight_Login.jpg deleted file mode 100644 index 000661695d03becaf72fcba19f0e397c67d0fb43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55362 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 diff --git a/manuals/developer-guide/src/main/resources/images/800px-D4a_application_view.jpg b/manuals/developer-guide/src/main/resources/images/800px-D4a_application_view.jpg deleted file mode 100644 index 9c7366e591f70535a7e2ebb8509a373ea16d507d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88908 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 diff --git a/manuals/developer-guide/src/main/resources/images/800px-Framework_view.jpg b/manuals/developer-guide/src/main/resources/images/800px-Framework_view.jpg deleted file mode 100644 index 6a251905d7f94349628742aef6069df71a3619d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81531 zcmb@u2|Sd2*EoJ@Fp^A`?2If)CE0hQlr{{$1 zyD_paGuFY(HNVTf)pPf}@BKXQ|37`qr#bUo&VJ7Ke9txXZ}bshmyw>K9>Bl=01VJS zfDQs0x@O0ZoHaF57qz=C<9N%)PSjKG&|%Si9&Qdd?L-ZY^hJ$M9oHB2RF;=MDC+8Q z^@fA{9Z@Y&H6>PhKcEY2W7v9ay>HukF~YXqnHU*ijLb~T%)kA?x3e(Ax5Js4S$42& zXWe>1|6|+1%C_}kYmwilZexPMm{{S=@ZW~~S8wzW00#?01WXjhAO>vXV1RKj(CYvs zL?qL1=s}eJ{$kh$V`O56Lul-P1{Cgs(1*bwq?sU$q0xTO_W&aY6XzbeBg|ZU@-AHW7`-=4qT2L#99JclP&s7xSSPSVnYBMu@D)| zef<3PoNAHuH}MuqCYE z-p=XZ?keao-@z3MO^BW{bp#kD;^C@_>=o@TdiFrez6n$?G8mpC?5e};BcOF0rf3%r z$h&n%;tID#vNQwy+cMeXkovJgbdU^em#LEpPru*mkrwvDJ@oK0WQ5^p5pcpyg zO&WRP=nK8OV+MU9k%u^5g(!(Cw}syx$i7gjHmfQka_0pdu(`Va)GE3^Z^>m@>tM0$ z2JNQB0olf}OSDv!Gaa~}#9yH=bQys!Z&Q>}pEXYFw`{SFH{||q6Z4cda%V@IPomQ> z>N=vIc!CnN>Jpm7FS{qNo0Qw@m=zpCS!Nx4Vuo3^?t}-CBHgNy!FyCi6AxpwW7fO5 z?&lxWmg~8VSDu=s1B5c9jg?fjd2NP~a#6F3+p0P5(5oV%RI1_hfu)5JICVF&2A$vd zAbJEf=R|xfBc7jISaRv|w66Hnv!xoz;Ov(S=k7P0TgzoSJ2tjWf2a%*7ojItot1QHjqbCg)=9_7KbU$@%s;a~Fhu=|oslen#`&HghH0h?;rPqRs%F z>XmO|3fHc8!RvHBlJ7 z8Aq}+BL|0z?C*B}{8HbzO(MZBW4vP!cOmU;i*KQWHB*^QZjb6K=gs3(&dMID4Z%tF zf%?V1sM@A$u?^j)FWQ>$O9l++bq0QdamI>#*f<4uN;utuWgV;H^>wG5A?NFslT~V> z`1_oSlvSLZz1*&iy)!GUP}v_Udi!cgi0RsO%SO_|oWrI%20t<%yLkj-G1~q3Ek@R| z%h{c#Q0Ez|F_%_WQfbU`mC@a^?6GJy5PC!C6#Vr>F0RYsz9k)~)~5s4ta8HAMjp{# zxf@VVREha970e_lOA5p{St}>HCEx!%zB5qe`wQ0OCrsWh_1K3f_9{3AewLC>cB(J( zMuaLF>y>_8d8v2lk>ybqrh$#?fsGRJz+~QUHgYGaA*Y{r)rt1f-5FMg;@3WK-oD6R z+7`{;EMeA6dsQTNfbZVE?*T^zRU23oeN||=cw5tltDtZx#ep29-wl7Lw4)!1NKF{4 z{Q5P;S>}r%%TA$Oz3|z{-2v5&;-VtY)fBIfU@eb1e^BLPw0+rjYMWb&eX3%@S~6@I zmjH6xbws-90If!H#;uMg?SWQBb~sT_qkTaKz)8V2IyM9KkLYY~ReSxk!)+)40S%@= z{zI)9fNAZkm(@yFONME-sUjoz7W6BDZQ%)s8RK~-VJ1LIb3E*fVXHTQGE!?L==trN zPz2bPaoiQFDUe@T(i!nrw5}9c23X~9p|WI4xZSydHpE2%<*~(``xuwvPq_0Z1Ds5Z zUdin0?X5X8I?U{HGx`$k;p{v4T2Gu}C|>5SNCGSO4yi9EZ^I}8B~n@NEWWj5l3Q5- zo15NY`~JvfYvFwW--3bPPFYoAAzvemoD7qCpKSML9{@{e;|)Kx?TRPpUZOf4QPEbZ znhb2a0~WZCaCC>C4i_l^Zn^5IjkHI4FXM!R0lrpYRa_eP>2P+G0HC&vdt47(3wMn& z0$7;CecGeILK#4mafxO>^+7y~567ov4~&e4yH(?aR;KhcSOK|2byxk9`*3_h{))hr z38^r(mE=g*u%pc0e)|{Q0LVm3%LCRG}yz3(`FX4^($f z33#na4vv+j7!&&K2d{*&B(&5o26FS*uIosQR$V0b+`~HHgNOJ?@LD<$E+SP)aU^EeyDon~vzs?uZ%)Z~a8m040zAq*_=}?rAd5_2yjZ4S0bw zEx1dT$5)9GH48So$8K3aIZw246B((${fWi=z-9wS zaqyer#hj1Gm~-I4$_u2{#;ALEVX9y{)q&DFQbay@S^cZFF!jL0Mo_X?y@n_6nNM(! zZDdP_^+8P7u9j!t;<@G5Z}7*x^k?CU6arZFtbf9j- zIkcCzrsv7UzFI8Sy{A~&#Pf0f;inDx1?`zOMzRBR0EQh&Mk1$Ey^+q}w%kIv-pgT5LEBie2=5+OC zJ>iAAC{D1`UyOz?^jYBaHSW?BCn6{p%63pyNOKKwqfX@wq@`Nh*4-7#XR>2tGMOul zOKtV!4!=zC`1X7=YQ&DpEk($g+d(!pqZ}uo0)~0q2lbD4>Af7?k+X}cU6NnWF>jJ$ z@o?vt7SD!ern*DPD_m)7ncuW!s74eIk}07olk75@^gzbl1u>~?>XYf{bv*pmv4AJH zlJmLR&z;SeV>lwg3Q+so(rE9rw_~gI6;XYkS959c;zeDuno>k3JO}25Avr;1b;B#v z`S{akMbFw&tYWSN!|q%dcGc=y+$LAx7Vi>>hf;^$_kI5D=mKQ*0;_|!S3?pD<%JG; zr6;)Jf?tNCbNV!Sa60}(Z1)p~HvJniwmZ{gV>LIK`qK8l3LO|?g9H`s3nQDSzMZt} z39WD?>@;euc?$1;Qsb=aM%$oM&F(u)uH zeCM1w-BF*+dQxi3%QSSY`h|Scv7wKwIwzc(Bw9uEZ$R#0y%S_9emxzJoE;|m__^qn zE03=?pVI(suChYz6JNVhvqWRnHU;zV#OqAukG&q^G ztBT_r*x9$5nL`I^PoSqQ(X(?dBdX&j9hRa-N#>{a3!t6&nuw5i#B&sSZY1X`N;F->b9L))V!)dK5XPUG@1VDj5+*04tRFqmr`tL<&R_+881+iXIbCfT%~BPUygi z8|{&<@p6$}rx>EVfksQ!IX(E)j1I8U%;=qPy5Y{k5m-mSwzS-2#KepqJPV$t2v{fX z6uz^D3n%M$uD3Bzzyj+8+i>ebZoqmdK(0Gd<8{_0C4Mc+9BeHDF3-|AGOP6>u-7MXaX?d|=w0}`!z;o}Tyzq#x zONGN!?oh%-g@V(*D6&tm>X2fS4l3b8mlVjVPpU{r3iUq><#RVsRR4;Fx!EKTTQ>`S z`huV6)Q%h|X_&q=GnhGnpxoiDnNK2RQ_+xxHlZjqBxzALczF5bUjW&;*%#1UR9-%6 zeUT0zmZ0gSn_cChCSR8Vph=H?438%O zHl!}gLX=)dQvIVScaSx7U_;9PFUYUxe6bf9ta zFPPU47&!D1KS9;qJfHxfB1@tJ3X`*Zpf5 zS{&r%)`ESBkW9rXkob=+)YAdV!5}&i)egbLD3|^fMyrg*wo*b@&F$!bHktt1wf6@s z^u^vn)_1MtB%lam=pFdUmlQnYr5<6)8xR1yV=0MZ@xO_Jz2Zqt?CrIiKScRs^nW1A zr~w4o|7jd?!J-AVrMH7v!lj=P_!~yWc`oa8U>9TsbYS8$74>C9b2oHYO%)6rQ}QMJ zJDUH3&HUiauY4c`Oen_jZPxs*P*h0uUjL*#|Di(7eejwyE10#6|5T(DmYC;E4qsZP1Nz`?0=z5ZVD0;yIcWdPjS%gwMe+;H-J|uY2xPAbB zo&5w=sYjq~{H0GnY0n?}{1fC?eOi+>>ADH0{NYmmW|N4Te*yerl2HS2ZxvaSfghAt z{M{e@0Q?(&Vi!W)H-M_#u=tB}KZbAVMJ?#?zan3Y_?dH%7Gr+W;(u16$Fyk`#KQj( z`BLwjxLc@twCW#bul}+ifcC3&hmDKO3#Y5XhLmO`78y@d5)X_bDf^!l zrZ{Pfk=z{AvkKcHTh{IrzeGF8@+cH+3M@l8>o68pVg33d#ibs(-S>>&RWFXn@ou7F z;FIIp_$q3YHCoWug0v8%A9hFy8LX~ zSe4E@Jjx3PLtpD{N2U6^KPg?+PRqjJsuTB69*~f$>6CLgnTE8{93Bd9^+e68_l>yH zvd)vyY#g-=W`_3jBVF3(zF+v*aM7-^8Q zfwz~x+O2AnWE=2s>J5qmVfZeVrAi&cRU3bUtD1}=Ow@0;#*>mlojY1Qj&ysM+f)6T*JTIbx?}2ht(d`PU^*` z>2qCEw{{)j6Ae;PT!E5^N4_%0S@7%?mjOP&VJnbe|8DTN(YruR>TOz@uhJ+A@Rg@U zXu7w-47IQ2hF=a#$go`-Uj z-&3Q%e2X}=h(5^ElqyK*2|w%&9dfrkv+>`ZV?6~c+=7F`q8=sc9px4@EXR~`gpj3C zXC^9%JfpIaK+-c9DYG&xi8Q!C)MVbh>`$OAbW~ZAhUYp-i0ZZYmrzN-A3=Hj$=U9d zN?*Yvhr`U}rTZSoUDx)!P^2$#efjL^HuK^wCl9S2|3gV9|4rgTs@)v4AJF;{aeq#p zc()w&j}ZK;qn5yWN7QbvEQS6NQF8u@N524m4KefRg;VE|qe}m`*&(n@fgQ3?*7@h& zKcd-xu=h>mu;Qx_|CN7;^FQT4zsC8I$T_|5Ao<@XJO3Oe-h*q7Du?7R{!f9T5p?(| z6aKpvwc^(Hp}g;YpaUE~5cnld{Q&%%WaqH(`L+w*H-Ak3C0F|2rfb{+*HhUP)_#Qe zABwVdjQ9u5Vf1oTkzI@U|HA+8p=;%*OI@FgS3zq2KV|MH=rHnE^6+=p;fE|evf0H0 zr~Hh^Pr2Q{@t5tt>H#5Oy5a8UPLF?}<)?LjU86sAt$E+oq{_eI{(qPMi$jdSR{SvH z|4I}GQI&mxcNI!Nk3Ve5lwxsNmg>HB{^*$I+@1?8!jp{(_GrxYDJu-GwgyM0&Vt?dW(J#^9G z=z=sV_l{A$IO1kbD4JcVTfOUxEm`Wp*b$k5JeBjK)-?>B;)x#u4p9Lo`(%(2cx)iLoDckvF(*3 zBX@Q9mUCjh9PY|LIM3(ZS0gvRSUOMGUm;?(e|b6D6aRRKA_WSljP8ziENY`nPd3T- z$c}#GF0RtdK9GXkfp_?FeX0sNz||C)f=cLjcus!}>LH3gQ4kH2y(cp;CamY=bL@D* zQSCDkc(q9bVR#kOolxj}<)ju`$B(WTXo+)8=0D`$EL?d{BU?FCE@PK`<9G1R0-7U% zycW{C*FmVNVByTm&Lo*Ela!YeJ{O$Is?swrDf*m07!^kTX7?aXP&YR2GPt-njF##= zvy=($wwqI<13C*rSb~)lbTfMh8pLU z)!@j$^n!FvH)4}4RdxqoRp!(bL(Nzj#w@O;mM6*g6>z}}7Xx4-C)?Nf zj~^0jy*-VY-I-yQ*kPrip*6egkmgp?aLw%o^WL*^BD2IYJ7N!Ye`}u`7&!DNzx4kA z{9s_VrEEC$I8oRfvusK^zI;B*UBl^NQ=y+^Hvggc(RqH{P;^~6M^*sbMKfWQZ-}4L z=4*0Cx{S z^=|F(!fkRLgvth2Y3UK5HQD-4i46ZDqrV_I1ISq!DKO9zPhrCo^jAfq!=YRax}6(= z3hBYfZ*g|iO~l*@mnCHAFeww|(7FM~5a|GGFN*RN`8$A_@+ZK*Z#t2g)bf6^r%x%L zue$#}w@0?iC~s&5j6?@MY!pYhXlgJ%p7QoBHsRCRF>6+hEoD(ZYd^{hAjbl*+N>j4ADd{@>7?zE0$sI&eFw z=Yz9beOX8-Q%p;`TbkpBM`~r>;JYZc(^+50Pk;xZu;R;3E=H7BxN6+_i@t_FrYzIN z8Qa?mUplt6@;mVFvQ^_px?Wa}P9VM&t5o+r5M8p_-ZcUCe$hyPQ^nE3_=% zZ%WRQ6FI!JKH5r^>8Aq`7HLz^DPI$wi3!89I3%ic98&T*XIt8l-1XY$c|e2lG4_?s z+PCux;bDQ=(p34!6OpL zN&q8#Jt0xH@?Z%!hpCQH6ul}9Z0p2B6sgz+RJ#1ii#QB(00pBOEJGs{-zq+cu@pA< z(~~T^)yR4*wP=_3w(TFM%(?1C_@A8N_7~5!Ughu!E)P%2ON=I>rd!v*g-Y3#Gm_wG ztTS;l(UcCb^fbDxQ^|H9&m0|ScuNQFIT4GgASRyQjTNf?V%dsAX6iM@{PzYyy71y2y5K%1fxA>FMR#BV9qzY^=U`XI|pH7n`S7Nefji`603$i`h4dRzMR?lpOaBiZ(-S zq66m-K-JgQnR%2P{yhlstj($({hI?4#BCyoXc|++x!+x38BHCs)TC8=I)FPz!h=9R zmK<+NF{A^wQ5#BVHtfhw$ZhfCXjY$~YW!x;dgw;A73lAeBq6@I%%UQ&%RFR@-%b7( z0#0HHQnYx~E<0B7K`}|t1yq2T1?>x&I3x`$ zl>y=xQ7If_x;K0vM%rmSLaMGLz4~~Uu(VU5XJvu64DEdQi_Cdsf6z!zjVgLO?0lRMudwi62Z`QR ze#IA2={TAhbeS9zx;lhfkAiIRZ&?eJasR6plFKu7$|dhW&|7M zFM^3=D#;P;P zQJpAJMAi#-$>`fQC%iK#VS+aCZjZCo49Ze!xCasHBangZY5DF!R*#{OsgWJE= zqee0w@4lEsF>?3Cj-2V4cA@g5fd;bo@Uz$gI?&-1PtAu8$?ihf>T@F!?qu_*Br2;n zF=m)UbuE;NsJuMci*1T_De?~kyNA>%t?Bl>WvyX~{pH3l)DpGCR#6C;M4Hr%^NWkq z-ka8H6G;KuyuOB%aermM#IyKgA&VpHhG}uZ@7~1)vci#N4v5sAgq`Uns%qnPMu4)lh#1TPuUk5s-!M^zrh-j zkoPrJVs6b&b)~W2)Eh7lQz^?I|5`p{GhL87iOgLH^Ox#(?AsgY{H8@y3zNO3l7(a3 zJhGS&dPjL1yN)pCgOEjTcH%*o6&7D9vWi*zJ0-#O6C~xQ5+Q=mZWuU^$9OheHu-X7 zp#0k-2C2hfGn$clj+9ipcAAoQQ9-L~v(q%pq^+MQeoJ+;`Eg2VTL_|=n z1+!1)i@GHnmiHN-6~ptm$|any++xN)r_IzRlxq<#bJP;ZPoAVps@*;t79CuA*5QzT zez);S8!tc8YE>L>V6$6U;rnUL^i<5C^v!{n8_QL7o=I%}oD^)Gd1ku3r-he=`Y{2& zaP^qHi`t((gl7{cf_#J@m0?pQrP{>33psbQ3S|K#baGl8XRDrF_`RC|Xi{`iG@5+&r4 zvVo`*Q{3ET9WxDl+4;cgTR}JV8Chwp{E<#(Ir~#Tz37;E(^KXrP;TC5oMG2uj0g>P zX)T@ty^5P6D&T~do{i|@u0x45rOdG>>rwO6QbNc+n4Sd_{|Qz?;HQ!%(Lf7L$qWqo zLn6G*_dwdv(B)b?oK@}h(ZSS2jCjQ9>oyO30=Dnb`8cV5#$E99puBOG*pg1=PUW;) z@4AUM9}nc14ixV9&x_nc5x^P@(|q9-Z3G#^r7MY`%g%B z)TzP63@(Z)u&OwLWd?}DsjkSv zn)lToHYlGjievl$0us}<$wV#k*DTy+ z48uyM%%N%LvxWIDjzk?&3H@?@9C-T?CSvQPUk4p2sm>$A_q2JsK(3@+j;Aq0n-@t} zpP_dYJ$0vPTqxnx)$}Zn%bF95k;JSy_eDp==rQ?`0~6>#q66Q}CULcy_@t}jA|3i4 z1T3nNVev_|==+!Xu-j%7zES0kQB3xI?w<1<(;IB+!~HJi10GL}-#k439*_Mj-Rg(z zgV*}=QsQt_L$d7b0%>Tmr@Ag#Zz7Urw8qO)iZi$IhWi@cQ`1M$Bu9G2!_r2@ECG92m5!F}Ji2>8xw3 z&6LQSx-nIJ^)XDj9n8H8-^qV#*pdRTi{}m3MbR3%LAgRLQ z0r8F?=nOj3$-oSEsfkq+?YLqFqF##b@{`6aH@>l7=!mR54(!#!TC(t`PRiR?ue{mD z5vgzluI1ntWeLwshVhREC3r08>q5QQhou3b$O5;-*Ws+HQ##w{U5$ehpPud_DgvSN zG(V@Qg>NC&h}mZHQP0NDx6@FobrxTw_{MrVl5&@8`d3d;eiF~?xv1r?Pg1PSF_wqV~lk8UZ zM6o;+K^(Qz=I=3%Ei4KqVv$tdQgm>rChH z+ln&mY2{Wm>J$HR-plV~njx*yf4fsW{2}#t>cDhf{Rp1_IN_xp!xhG2mAs3M&iut@ z!xazSJWBQrf1X18o?SbNm=h%R5b*bWPmj*o)$^?BR`(q%dxn2AmEWlJyz>HvqmPj@29{zw7|gvq=3B}25wo|^M=$IHfK@irG2Q=!n8-S>sX>e*ghh!MALPI zY~LV{n)s)J=Ztoa58a(t?7dJ%R2A}p8t`!E@EKC$gBv-7urs@Bdk0dgPGm;3S9N%n zjoFxrD@|yt(+a7G5!%U}Tt`W!VHFlW9-|tS>>WKd8#m4;q7OygbY}>o4TsH6+-+{1D4FwWj=pmNEWiAWrsvf#kM4Qy~K@ zPWd{Oj9a)661MuK%cxD%UF!C%=Bx{80acQiT5(E$(-UujDDB%P>eJ-v{PNeIHMLTlUw${ zQu(>w>5*+ZGveD2Z$%wVH|^~E^n;M~Rfj2R#5vYc=gT`~_1ctVIC;919+sYdDP9!G zKW5IScd(@?gFAm0gVLgQ`KCP8niN}00Y##=VQ}>kINwVT(XsXMsHosK<)hAO@5UqS zo-8_jvyGev+WU*Hhsz&JRh87YdrLtzREbd(TnW%o!v@PUy())!vSU!UmJV=LNky2R zDGxX{@;P;w4mez-JsI8m?UTeaCDA4Zv&|_>r&m~uH?4O{Xl2v`$h(CuJQsZTkZE5R zLS4Y-Q5Ux3ua3qiKGJSo4UV@TdwHs+{c2FdJiBYxVF4^V9k_wsL0LKqU0$S9waG3a z2YpS`kJ!8#pu8{%*yNqDaRI{xM0W^DX8}G%B@?>{#T#9QW1POy}YW`IEtS`6Iz3Z zWP&~@`!kX4!d5=IFU)OU#fCCI8&xc^QjlSzD{m8js#~ znv7;X*!dy5JaD?#Wa9^FWB7RQQzsy@%ZUUC=B3s+wbC8PhmTJ%J%~~yr;osQw6hBdwDy#CsK3Ii1Bu9F-xi$ zba2h7UbEnBd*GoIB8Yj$e{=h%gY7$>8${pKtf|*K>AOIL&#I93FKlk>L&ImZ4~3vZ z(Y=-l0xI_lW{`PK`9lLk=)snrT(!lUd&?vf2NW~M5HX+`*F@BjcQUAP)bT8B3CfvM zkaHUgBjiy00(2Tq=+zTdr|n0?^N*!8zkNmn2W9wp}a7p7d@Tc~GN zTPVZ6x%#>*5lxYlYS?@`JRaG87(16*=zDcj=JIDR()`ENYo?DXl9F@Yf$GChDUl)( z+vu=kf@cycgcduY#lTNORP{VMkPTaBZDqszDYP4PU5h%W)+jtFUXrTXC`C@5Na`qm zuq)g(o<(iOm=dkCs(A75A#1IkPrJ*yBN7jm0jk2T>ta(9l(wsIWAm|sEG^-dICMW#mMfehbR=O?d<-s3gFhsohH;C z1}q_k{W~{ML7Lcfs``71DbbYU(quPJk9TTgsN!?GkRdf{C!gdSJzFt;_OE6bqD0Rb zC?5((v1yvVn$#BU)O3Bb!-dOI-|f|o7lk3lUAI_g_4mY8T~Q8vWWZ=!QGTA5=xa)b ztv)3WhviUxh_Y-`0->SHR>lq$D(Q{RBCpKccZy;D$_HB_z}6-`FXJXCT1|)PN>`KuJ%C;vN3T-r|+HA z84fE;M{gnTio?U79-HjOWgp8sL@f0F{@_FPc!feWa;H)jY_zBxdgP?{&5U`E2ZDci zh6lZ?&)7Y(ufb<;Bx)GG^spgq7H@kXirAulC+aTV4jY9+VD0)_L*sL51&28<&3I}H zbRF`za6{&%%Z-s@dtzxP5C8oTi^9daHa!B)MQKqu=%(YlzHc&Ivt5+H5j9^`&8x_W z0?!Tslc2K#Pxbme=Sr5moLlDQ5)08FkIOygvOe+YM+cp3gqyl{cA@N?mnya$?q5WI zIa<=75U^bh22~zlzS3mbS`=Ts7g?6To|QGpi|3qQkr5WR4 zY|duTbX|=x=u1YY-?nz`X;Tr5mcf)v2lA)N&O7S~I*c8&k0F+Z=?gX7+#$jjy?}lnQC__%;CooV@GxwooX6nd zd|wvl`-zfjxYowknv~SN@$cgeRubVC{m(vEn+iJ&3u9C z@UPI7==W&q<4dw&W%RnmNKQk}x;h%b_COad?MLz6_$&Bzu`)ExM`|%Am@vG)TW5o9 z0@UNud;#t_LkA>yYtXBxKJ1iIv%ewObS#I;4X-7|V?WjT?Lbagi%p)Wh z1p%@`v5|>^mRun{`qI;dWlCfhDK@-fH<6#pku{(k7Av5*VR_eSgo+a5m-I)R9=rd42FHh0>cCd)jf13OnTksO%f(Wnq#IN`!_ zsp5D+Iq7>#@-wbW)0{(hPUidFYZR5{%wBOOjyFg`&&ABFHs({@-uNQhD`b2!eQm#j z5`7rY8H2C>{8siBeL^Y%nj24j=41=&-j_cy&1)8N5lP`_xW(Tk?ziB!sp#Jt+r2#% z?aN2%TFo7rj&*R>j@r>6)fJw0D%MF_F#E*PowRp}PV+6qM6VOHyO0#K1PM^G@WJH3 z>RA#K{%)c1_sT9`8Qx&$;}OlDh&Nil2&K*y0($m^7T2ezCPtM*T!g@o5*Y42=6$VNYp8AIG3O+iIMF_}~ zO}R1|)fy)g&g1uHDbZ<&$pDSxrn|?srYsEXopyVo*c~+>{PDB)MPb1J}o>s@_fHDs(9p zeTy7L3$O*x*%5kX>o+y2d%hCL@S5Qu5kV4drSNIdqf1i)Cr%j(aY|+w?z(=;Gw)mP zwn~=5Q1DLn0spV~#hco46W|pE?EVs8*A?z6uBC%^CDgYQZQ$92O`kR`w`M=N5ByT8 zvNw0`5nV&Z@O}K$$#7>uU%TMSN=h|63^)@#6zLY;rclqPO3d-r5$VMxw87sdU-wLg z^@S%6v>j=Y(^LDH3`=ZGs}x#Oypkx*qSlnmG*KzE(H_(t%_t%rkS0|rG{K*27k1dS z@$zzjR=&PkGUBvO)0_^oTJm*w98}#1-WI?n(siZ%u6?z5kPZW5{9!l!94KQc0E9*( zL$}@4dfVs-9Ay#eX&=r#D~~B(^`m5xT6G>vcF$im%z9_+yO??G6N|{~^H%3t)n?yO z0~oyHbphF>4j+;zT1;N6k>zeqaWc;^R~uz`c1-olZE@f1P}u%jAy_rg?U6iT^!avj zk6h;^j8}uX3c~3QLB>e>bXb|;bwZ#pMhqul8m2!;YI#MmL{ZEUVfc}ENu;wf%FF%s zeY~{}xYH49B7CI>2lG4!0~4v<-4;|WBFI_<^>p2{B1C~)yl86N#rY~pSpq2OvmgD% z)6S4=fLc5_4U1Y|#*&g9wD-erQ=CrEBvF?A@iDGRq_rf<{$U#HFdLTi9CE&6pHPGa z6zLp(WB1lwFhS0P4t#uCmHS|;gK9P%YV_!Rd7%E7v&&9LlrD794RuH9hdp$G_P0LO zDnyHbZb?d7DL$>#-7a9TO9+Z`;u3bz2KnnY+CMKDaiCr|Eo22*(+ye)~#p`#{0r`ex?A#WT3GVpa*tYz) z2-9U1C@4WrgRp=koon6L?az-T$o$4NZ0!(gBr|DwKNV^ltFfGcY)snE4vHVzwck2H z2uq8w+(5!hUE~VX+5|BY9TvcP$tzbHDTWp8JN%IiMASkt>Fc3of0 z`?7fT{?KgQHXTu}q)Q~;U@_9OAm&)k5q&qT4Vx;PxRIHWU~Lr>^4Qs9-qX zF$8eX^VlUH#>s|V-j@Y>fr>0iis^?@3+xK+;>%ag& z2!J0kC8D~+y+>o7Sl=9h;-J>s>Q=&$26a}szUKjU+-_Sxb)h=eL2`=+4!b?E=U>5f zE+-Qi+WR65X;huu%PEKCO;pG73MV8^a1e8i6wq85+%O40#qS{fLAv1crHHk1xP z{kEgB8|%;wV%wXX?qQ0IDfJP0JN6qC=Ankt9;J23O(>222%U}}f>q9_W$8@hdOCKl zCYE|Xi4rw=hQLd`UxZwl$9I>xC61RyK^dvoH#a(P=rheJO{y!Zrt1D8Op3o*C_2HP zo6|KR4BnFk2s69sX(WyY_@Q3Hso+@v`ZbPptbmSNPY?7X9ecG*_*QY`WRC6tSR3s? z3mtGAUROczLyI2f$H#c@*-R6OnZOo$LYE-EklVS!pYe*^*kwjB{gRu|nKhC)PdGSt z<&JGk&2cuP3ojph002V?a)5fL_cpA+#=}(!iXQ=bSX>#htR$YPbPvy1Q#-;p8-CWa z!FK4?ht$&PZOZCB?dBQjx-aHcuSI(&AcLS?Wcw`YH{88nOnTc!2xSPU7G~+Bq=YqTL!i@zvNv?@kfHc_(gR`qsFN!s*_9zo+NfQGueJADS?hhNJr52rnmvt_o6KNG zWnGW3I0d=sUhKjWHsbc?3FA$J+L@<0DJShf;iSzI*f#4L6h)~7iY(qJ0_2_w8fna$ z;&dR$Dhkxkez9pz2SBU@9l&RSidZK{7>KrkJ~V@hJ||3CKJq*>^<1FXRy5y&f7XF+|8;yos`EG*O_^aMNH z4fVF73L({=STx?{?B+LMv4RwfY?DUuwLECH*Eg=t1Uu zNcp2S*f9EZfVmh+jk=_=n*9o*E)P2l#TSPuOs$~(LExb_9#Pd{mR_N#*B zx%6ui9qqUe*K-SEcS-;>hooLlQNmXf0fP3RvN0KyM!Uuv}!s9D4=(9r`vm>Wn^7XLn2771Y*8Xz*{7as&3w zGiasvpHiw4r0yXj>vMKjkKni2@9^?FeDKJXbWXOLUe;@8ue;65J<-Xzg(96m{y*;C zJRZvT?Hi|rQWQznsZ>IekgSu0kfenW6DnJp?AvgKB*zs`XwcZ z4ljCnHcDs|S6|C;xakt{`QnW{A-z);!|$N6*J8>fic<~r5{B40a&|a3>y7TO_%JA+ccq z^E=TmAU0-*$%w(d(_*#(?pFAf0M@l)26hP`FKa)l0hv=9{bx{JhU#_#YSrYQ?L_#d zltg{Nm?tOw{@(B~7Ty^(+5b$AVMR_AZ*PYA!3`PYfVl`F=)aGnTG8Yz$o_&4uhO(8 z{+Wn?qcWHxatxUdJwh{7btfd42V{4_ZcqpZyfdA$7izH~7fdVBuH%c2z;t8qp^Q~@ zYs3T+N9OsjOG4POAP{7uls^fjS5|hPVwiD8ZuX6h1gY zAOuo|Y5*6))?K!P1-Aag*ChXA1T2ZucOz<}1EaeFv#zx*?m?0bWuGNi$$6Ush7N`J z^pW`J#~J3#H(RLzxVD=n8TGDmCYY>T>pbd4y>N-8A(E9VhW*#@8J{7mXhlx9DAH>F zd`;quKFAJ=5JU6`lT75ik5G-Blzs$8ec1R$N>0zp^zCjcITAiy*8hnsOC8fPpr)5n(BD?GU$DH`f)?)bWXEx-=3m{XvS zq8-P6=Z}Jl0;If6cDm5(OcP!rY>f37A-<^S0A*U?_bU(FEiyaZzreRnei(8XJSY76 z4!oVkJzsLvEX-lrP9o=i3%K764Sn){T3;8`KT~v*@uPs|8DEFoJQ=Vbpp3W38#z7* z?FClHPqgdsW;{dMpvlNs_f<*}Y9Gi!5{R%0T~5H0NwUwN)msd}0sRf&{ZMTY49Kp- zmYl_0lckx&zf4JAN#AOBR(u1TIe%Y7(|thUMOA-$%NU%MPFg4+d29`Cy&FGnZgtJK zDiCi6-ulc^=vu#mK$htjV}BV`bo0#uci=aVUMS z?k{bMtOKCG8Ax&*F96x$qjB4e3xH*b{btuq0K0wQkbg?Xt-nyVMf_pds$|VfIXpL4@?=6z>yP)(6xDZxAo~5Tt)1=+Jhbgd7k- zP5`TOpxphFW10KixXy=nZHr$b%K1v0OOfJZ+y|ZCd%sEyF{+r!I?)p~xi02@iKHp6 z{QYL9#|aOoW96lHw75AHokS~hKU%MAi_+4E`5IGqi`;+AIvDAhY8!rU;!NX%D!#i|OZQDn|~5FIw=vw`NE0JB#rrZ2x33$y+ z$eYrg-8A0%$HZtzfZpx@5%PUZyEe6?&G${Q1fx#fpA9Pbc=Q z?6P#N8b95-n!@#cT?0YJf8%+^=V0Q?oQn0Dm@esxy&P`gkRq6Itl(n3qIdsY?Gz1? z=NY&iw|%U$%N#d}3=uDSwK|~fA@MBl3EGt()yRE!5apCJl-z&EC1{TjM`65edqo2i zsjt>w2I)`8!e=ltogT5{Bc>Bxp(GF1srxn4Wf}CSTCv!>#OSch znb^5JkBp{5t_b_L4h9#soH6gouB;6|xgBPmQh&xRc&6NieqKEWM%$P+2N(8J#*TLA zp0hNyvLeC~y=PwOw1wGhhr^5qqDW6UB<*yQQXIHT|(2t(bJ(mp;k+WFJ9#>CO|ShFi`*d6o0aNx|h;#ab;5(Pw0h zI?u4TEDd7Q)??zI$J+-I>%pmQNdJLV{zJAif5>)= zKHmht&?Sij!%ZlP;o(uej8T=(7Jpp5KM1*Z&)tac4IA{Hwn1)`61>xeLY_WH?jgVt z<~8_lmBu|mx4&RtP?Q!5at!^+bB$B}geF8&-2hK^h&R}Aq{Cr{>>-M~Z)ngq?iL4DRhxmpRDup$=@9tu44%mO@-ltXU0;@zU zxovX)7kU|+#B$Jb6?dq9FDwzz4_MV?A1v%WS?7B{VNz6TaOhTNl?>70tgnKuVd0DT zh0~)KKR-5mcP^@QQ9O~JOXc;)aRw+Vxs1Ogz}rXrf@X!#q3)taH+qXKkB^S7n13}$ zHkpunS{7$}D-PGUQ;3Jgxtf2l%PkLyYR@4djJhcn#346o3YznHdDe)xDkMq6Zn^B;c zGPzD{Hw9h02N+c^7k5v0JLgH1vT1v%HmvApy^nXeD}$}92!6BsR2&&Gb|rW`w}4{? zziZXN^3=MnrPQ=hQ1?;UyM=}-LnIN-x>CL`#@|+i50Y}zj4K6qoh~6HW6m?b;vI3J z<}H2In&S|UH@1F-HYy`~xkpWPeA)^9S>t(GSWDb!4oA|NWT0XahOJ-v1ZuLY{Gb>y z_Loxw$)-;hPN^A@+cb-NJ%qXZ=+0`FPRXMkd;$_XY|(Bf{nCpIqi=N_MN2NeQWm=K zr0)~Rz6rQ*+q06gxcF#T)IsH)Z}Cq7-_XIlV1>fkgW-~19;UaxU2P7Ij2r{uWj7G) zy#)O()A9W9lFb9L9+~#-c`@$?28Q2e)X6nM{>Y`lMJPt!#f0bb3I^%vis z-+A>NzR)|1>chmTq2JD=h*G?2WH^jJkw;?8W=#4_q~`4$v$JLT#F-}DS8bKA7xC`Q zOVAL*C?ph^F+}emixjzp>7SnmP7M!ipzgkme*FEXR*~nvY?AKB+~J3(ExB=2M_NxF z#*!vJ-WHxnEleLVn&9HEGEVz0W$`VBx0z!}&&!*zIP&`VT^$YcM-dd$8XjKnHAS8f zFEY)GV9pNQiy}`WCa!#?xWY@9x{m}=^-et)y5baOWBRp7Z#-NgjD3OsPGj)e`jaAP zx3{nnPLCWN=9D=&Olk z#&w&XO?1+xf02l`R&&kr@Oa5#a`5m|ho&bP=p*8s^{`zGO%>k7N;mVK{Jxo=K8_De z^dN*jd`IEOKAGqi>#QqYOy=)+tls5_KGv2jlTUbNcHV|}@l>;*TNHwXreDSwMO2F& zte^#Fd3)7SaR=PJ)pXyDFjTu0aza8{;<|Ho_bxl0kxq*ly?QjD8BL53VyG4+T%17@QV#c|Oo8l^;u2gj;!tI%|C$gr|>Bytxmg_#B%?3UFseE4E+@2~~GL!Ef57FVMXLhbCrW1d(Gc=$Jq zScT%a5f|nJjdk48tIoVKGcM0+euXwz-wRU*P8PG5(s##*nlvf1-QBpqYM?y$qVVFc z*H}+l1{pVwsQ+@31WVC4F88sgEKqrg=Y=e6YI#0uKDGSD@@?-y)|AJQ#C>oZqOdOl zBlnIbUx(trsCs1B@0x$xuaOv}ssOEpKV}VaW%Zbue$^_Kalv^uP3{S=KH;z}{b4}I zW+27xyJQiLqn{>Utx^&!R+?5E*=HWwzobAqvrN5N5xoRJyE+z)m#q0d1hRA1qXfPq zN<-^NNYl`Xhq&=PF$?GGTD@(-LQY9_PX?pVhFu@>^Dnghx)gn!Zg4L0Tv*)IdV^O~ zKWGO=qxe&wLbjTCRz_*qjXk~tcZ@~J2O1r>7hL8%5`9SJ!R?#UxF@56IzHT7`uGuxaJ{SRQsox0JBNfo&R>fRU$bgz> zMzurt5diAWt@m>mDT8s;0r_m_S_@)&KX*b4%Sx*)M1-l_bf6sv9DMs`5|wPZFWGZav$%VVV_UpN&)&7SiQUViKVP%0rn>KM zT?O9Y*z>%evj&OSHyv#mEJ%&+N{aD{jy>yS>O?dl+%8j++okjIF$KH9^mnN{Pw$+y zB-R20f&)<`U_Y&o>P*p+zD0}BOg`iwpm8y>{9?q+&G2)pC-yv2pYKH8GeMGzPy5Zr z+O3#3eZCT_a{BX2r(8q=R45TqEMrugm*(_1kMyL#*=^s0g%{ktsBb~YU2B+$3LdII zKG7(mN+qPNsY;=Tg~0UJv!Wd=;p89C!K`+vOA=n0Z1Z>1-T1ye)9t+4&)#>Br?)3w zdE6O!$M33MDhrSAA9qaBgk~^+-2A1g^}Jb0>9Ig5lhI+wh5wg*G(3!Fy?^;=0%%J^ z;ZqtwLu!by20G?E(mdA9!Pc@)-Gu5|3D6P1-PhtHkn`<7R0? z32_h*I6L~+O`d3txA8RrcmGn;JVTK$fSq8Oe0>@?byl z6&zcY3qa%UPlbr{gX=D;wSBASuCL#%h~}bes@Scj)3vv9Cu(@eAM`WHPX{9fVKG*5Fugd%ss#C9TI;4)!~!xcK9pD$Bk^kB+L1k=XT2-R_XCwnR%R zd{7j1eh<{qgq^UnjcT>im^a99)JNiXzZQQF3uLINc~u~H-bDX{3Yl?$Pw$_7Iw+%i)gsC7O)GY9 zNXMm^(`*sdoWps3b@-C$Z`qg=7-P5W`B|ws;sC&Zs)=VuSw5_Y)gUgca181$Y9>MP zrFTZ&?CL6J=E0m+Go_nw^5of+t}7tn_&e_hQ^#+4h;S)AbN=zx#5w)pqw1GqLEEBK zoN{jWs3O!DSD0bIuahirE8-?ieMeH`cma=t5Fw;@(vmpkopSD^dvk_eywe%x(?-1S z7}_bmq0!nrK!q6@AWrkTNC~Yr0(P?R?gdt~Lc%Z+v1@gN!yFnzGU6kza_6Ejc?BQmXSKHg=KHF>wD}1(JU2!;AEmx&=(Z=hr#`}C&#N?5F38ytQ5tR~U(i`$I_Z`1Ea{aO>KI-~6%L*|9(zS_jhJWBd^t0Uct z^FD{{UezxS-H2`&b~U%ZOV_TrR=Zx2b5z7tx5Mg47si9aLDlZT2zrePJ9E{Q5o+mq zYP5&Fa|fPwE*mI4vmhKn$ToAIXS>6qImsb{$HM0@=2f&T53=7FB2Yob^jb$zgugDT zN6jeTz|O(3ROU?eHlNeYM`Q4@;$r+a&;NYIqLl;pTk(()Pgl(XWNFu}+SRnP`wcz( z$DL(C<&DLYhl4J}-fnnc6YKo(4rg*u&hB$;&m~XDgd9`8ML`II02Q${)OHX`5E30> zs}y>eywR&Beb?jMb#xe7CNHl*T={`iy?E7gWz}1A5`sepc>&GHqNxn}bu(`oL(Q{m z0X{~Ym&qQO8`Q20{Fqoj(IaYn*kWT*zh!SMiT5Q4!PRourT!j0R7iC*60RMyFcLtG zj9l6Dm084%(+3uA7Q8ik5SO3+tS0Z=y?r^4ETcQx_=Cw1yz3Y_biy>$-5}5Ja^I@D zfq4*2b||$H#!EZcIz1vc`Y2?wd>YE^*&|PivMiZayWw}vODN9ZfzNbpL4WAPtI)AR zuYAV2PH6mi(DXQ=Us2#|iO*Pso}X<%&RIRf_l0CmVhp<*$~js4kunLTOb6{O#Kk}a0#1Y z%fDGL9n4JPN;~Y%A=wVu7vw!)Jiw6vh!cq=y_u|yjmEDwIz5HE&e5mJ@ZqKifQ$+< z4QPKL95_AzSYp7dub&LoQS#|rh*6v{usdMR0nco{O{KlNh-nPmh+Mw%03ab=7nt9^ zW17YjD9XE^byklQxX~Hd70!8Z{_=A|X=fylz8tAHczg@dWezgV-kw?Yk!#nrJj4;i#k1jyO|sZ`KhrmFL5*%Kd$?1XPVktMW_2 z4k3&?FtqI|zXRXIx?R5Q68|3kJIcC-b zmQEuwuv?xic&88W{Ud>gVN3dISc}Ou^Uv}B_I{jBSW-sPEO7s&4+I&QhR33DtNva@ zn)IJ>=8@z5V5{0TcY@j@Fap+1heZRyja>np<+yNY2{81Zz5#;;E5KUJ%HtHegsAul z09g;AYEk6O<`SN43U2QPkTqcl?5YaXu||Z(@_{|}dF}^bkGca@%OYnaCUA5bv>^su zR2&T66*wqB62KS$pM5by?ST?eG)}(k&S+>sPt8*gsonWs(SWdMpOB*#SoTJxdi)MaS zsc${fV5RYm-_M{7QLR8_8C8gTsJOK_eU8-%b(not^x%=xQfY5;w?F6Ru~l1i(|7e; zF%e2umh~ixPw@<>e(MX^Lq1lSH}SkiajY-@jmLKzZwb?mwWtHqd55xInf~H*LZ>x| z=5_~#M?aMrR;Mv$CcEZ!ROubjj!&F0O2AK&GmfMS7X4;nN=8>zGP8$yB1)x+3!Wei z{~k;TnF#A=J^9VDaK8&6vocjSr>R*lOec5r8X2fUOtwCL^!l?+K^x>ql^qMWgYRlK z+a$d{z6~*|AcK`#G)zPag|?xV5WZ@Zk*L$h+ba2aQjit)D}?nZ7Q+|wI*tf6$h(6Y zvZlbQD9Cm{ZR-bi7v|)7KI6U&t?5YSr0&-H+aC12gPVZ)HYBGHw(f!y3r?@}(FvoK zvQ)#D$nOu>+ZYD-VJEX5cz>l}34%shLrOw+=#7(N>TOK!K^z>{h|<)J`g)|wpP7vR zSwLHd3C_UTqyMuYHN90nx~JuwM)0F-bP%$7BfZwsMS7>KUv!6abGH3DFE(;Q zJUZDPR94!S3*2YR$7#=@?tcK-?C|;p6FeJyYI+1llP?~AZgl(0(z*(69D0$Dppn;5 z31pD7=YJhEQH_d1ExT8-0LPL%@EwK(tOZm<%i8YvO{&o^6jv>NSt@Wf(!3QkO%w3qn;J*iI;mW?v zKI4=}^0)Cd`*7R(|B9!WW7m;KUG&-JH}P_}SmyJ|(fBH#RJOL9RFP@+=zaxTwf1e% z3H#j=1rT|Xsch58D3LeqZsF!EI-As4D=)e!)cA!)fWKXbq*k@o0cXb#mcoX$^++mE zkZ#saVzYs%C*h1;GdjaxE~n`bI4Nk_;l|%A2{9<9FocqC#L85~t%ioZE@1H4ew*gN z@-+yH;{6~is<yXiHK6ZKZ3S=5W2NV-+|sas9ib1;%iVQ(GfL$l|n;Aeqs^^c4W z^+`f>Hthn2EN&e4tisLN1+7#o%26{`^&CVDImCY+$*6mA>HEE~kq+|%bML?5lCTgR zMOP5UQytYK&Fmg~D^X8TLTj^6VywxNH$cfMEdOlcYG1DjEJ$;IB_taw^P7i$47XOTro1or{$xDO#<(^gZe68Ip#WS!@73kF1&ag5Pb?~fWa}wri(V4u`EfavS z&@LEe=DjrMoO6e(&sV%1D!NLj=YyIT zd1aE6*A|{Z{#m9J=7ANMk@b#usr*rDps??|+I{wLGfP|S$)GduHT!o`d4RvFP_vvs z?pUz-Mqc8AYd?C6*T~ZlwJ9p>4f9ppm4!|bM=WjH2b)jO?g(bk#qVIhPKi}^jju15 z=FAK}%o&G7y{UtAy-M<_;_*v5Nm*)qd2wr#w?psyhzRaiJ^YRJW7c;3SN{TLqDCLw zB38rVtx-w`!S}QmZkdk6gBqu2O8ZiTi$8uO&(Dks$Mk44bLV9_$~UT1ETdCU3(em3 zBhPShEK`;8V-io*v{G-=`szoIfAmwuAEb5q8=t%@jyXUX8XC|nXN#;b36m6TSb6kF zhr^7Dr`pr4RP4xELdFqaQnJCB@cY}D@J-a{9nCEIbi`Q!!u=;0luw&Jfi4xeC0$b@ISD+Lw(^5}Y1NT&!?b26t!B&4BidXqWNX zP*~G^h0oh1=8AL&MjyydV=wVV(r&H6rv(==aT8x%!u${kc_)^CY{*kDDbrl;LbI<6 zEUc0t^JSxfqx;Ac&G6UowU6F}3=b`uz3>+vbGdq#&33&7RpVBb>wCpk0}y$FRFW=; z9rbBjNl)%?b7XgGNcCT;c`Et9A8=T<)dbUTr~~%}_Z)~|HQ{(cPr{QCaUdzZhAc*n zW;pJL6J=bbjAF+td3)L|9XA&<_%l8n>p$}JmB~%ZAJsZWM*}Sp3p*u)$Gz(Hs_7|W zVW0g|D-@UUq)FLuHAAw&)Q+lipk7&DH9BHch~kkP_bq67saEAzCF7C)`NN{Ap1bPy zKJuw<@sP>eA$ZE=jSCFIFED`=Eq&SuGzlOoJQY3^oM}ZkKq_p;(n7D2)dWsS!iP+EAcQX$d|SrS|Hb+x+HUlJ;L>N4daSkP9f zYd|X)LkZJTK+zdm7e$4N+~wU|!;?Blq-8F9OITj8xZC~YeO<(}0fPY2x-RRm?X6{} zaGL)_+YkpKMS@}&MIc~#2WeH7@>cPtqu@1#K za62rhR;1m~I%8JMg8Zls5*k$Zsnb_$+PSBo-1>< zUhfH+x0amsO^+>>e#8DOifpHOv32_Lmjl&h>?tRH1q=SVcjsK1YHsYBzq8vyzlIb|Y`)$L$?c4B$Y`A4l4h%_ zXrIJKj%qqC8cTR

GWYUj2FJ`FX|nia{;KdTm)7n|)IUKIJhCD`;60ZG(1NrIfQk z9@(oVkU2V6_B8h18AlbnP@`wgr2dQB;`L$;!ZHr)te&~lq_o?lpa#F6mNY3)H%?xv z#vuZvMrfRjYdtc&Fp781WF2cO@Ral`ny0A21UhlMT;;23fAY}lPxnL4W;pT8^_pI0 ziuF|3rPCn8_*;F&5l+IFOx^oT{ zP(`2Y?eBiJxeitqwIX-@lS3-{SYr-V-T&4q80fgEG`TiiXJ|Lc@eOESj|Wqdk5Z|= zT^4gGQpM#}kB5q%95%le^X{qc)zd#VWMW+1OmhwU4~Vsy_+KAGMQCiN;l?8%A%-HQ zDsEzr(1KiXPm$pT)m(>JS@^Qcs;l4qFo6%luP&)1c;;wfBaG^ah(cs8N0 z#a&|`OH2#BzLb{8Rja-_r8ZC#kJRY;K8n#~W@F4UXEX$RD`VI}W3yv{h_?#uJOA5;3lq0d*US)o4Cg}ij1k{QOHi%uP$Kbzy{#ns|) ze|^`nLV8oBr`X^*n)p&<3|kq+2SRN!E) zBZ@8H%&%%f?R@?GytA9J`4aa?xxj_s=p!{~}XkN$YwrB3qUK;v0%dzV<5LMm*s6p37{jKS@ zu3VoK?F1oZ@t4jK=-U}iKJj*Vp}H@yM2l9m*4PPwDQq#46XA$}rRL_)TN#Q*f8g-c*~W zrniE!+0xv42jF%hk$Hly1^fc5?^8enpH91Ckq^p(Xwsg)^_Me^EEaR48#mRycmz89iFDCoBvU%3DkySX+kG7W)Yqd*jv>U+8w;w8OXRDXOj!>p__nJW z_fI_*2)A7q#TBSjlYvYafQjC!+XFiz!}@FW=oe|%^$Zb{h=qi4#IqQS{Qjlh)qd4G{!=D z1Ne3+Ja@~(rj*tR)4GYiONeAyh6Wy}%B)NKeHlCpImtd=wi?ju^Nu& z`im~oVT40A)G5V~0Vbs&X!&z|Zx$nPq0a^LAA{AA|NCZk5E0&K269^eW4|4t2C)_| znVB-3(h0+Bq5|i;PRTx8L_9d#`$@n{+@39uAE+WKNDL^V3YiF0$iEeHbL zdM>y1d}f;#qh))(KY0HAAJ6yk!Nriuf$^`a(1J+pZHz3fG1Khut0`!Y&ZqOiC+mhr zSy(pTm_GT<;w;7$+qd{J6Qe>~r|?kGlyHU~&HYdX`cQ3-gVHGz;dxAu@v~pI?(kbT zs6RU@iaZF`>NfIzlBkIu0CCWcul4lIC-+^qm^+YW)^>EdS#Vly;>$hBtM7-Rx@2Em zInnBD|FJrjGS8TS2Om~B1DM6Ff&nC+!6$ze^psHm3}U(r4QZ;8C~_Ns84&Q6dvgey0x&pC zY_YQMa1&xRvISiI?62?)ZDgJj^`IY{89eZl!4Tsl80&j{c8jMI{YKw|6E%Uq3q%zi ztE~yB{_iHh-=v{NUV2g`;eBQ48?4&#w%fhD^XWvdsYj!(sm|_qXU>#KOXuwVkQ)4) zvw+-JEw-JeHQqID6zaRnq1VWDoliFT=x0OuI|?y+;_?kYcL*nh)dap_k+y&l{B*#D zJI}1~FoXcEm;ypGKw$g5?S1ghgluT6vk#P!O`n%qr#=WE{3vFA`4%JMM!KZ<7Kx3n z6_xsH4gS99Jd6Wi8`Poy+y*CpX1(m42njQZ4_OoiQTy0r+NQtUP5d|o`uunn==T3y zZQupi+7lp63HttH4>gLJ^+?+(bD<7;8cpK4YF`QbBR&!sq8{|fvKm}suzG&J{k3MB zOun9=MsOlI5ZF;8m@ieJ+RsaEpSnp%TKEcfunXQ5NYSMx(R4lNvhWX7AqLuAAz4sw zLs6V9H+#5r*rt3;lUM3uB&&(5Wr7~+rJZum`}ylXBSlA^q^7Bs_z)K)`DANzuT63^ z3-YhBpYbVBVWtF#8j$JL)XfLYPj9fiF-`Z#pE;fyD<50Vm&$PP>$DA*Yq=VQ{x@+G zNNgo+RjB$Q{N{4-mbAITQ44KIrGTsGQxY(5cfOvVMGu`qOHU?GECR`u3u3aE9{tTS zDn4U)WAxyPi>JDw>|kGa51;$Mc(#Bcb1vgkeb-knl2$i}1rRx)*vPm<$xj0~);*BD zgNe&+;_Xq3fm>RSe%U%qCmgx(({;Zi#P5&Bou&{5h%-g<{`>;Bjnof(CFYT zJ*Qun*7xajR2WLf3*UY|9?y0s+TQs{Ws=L+Ig}IXy6#}$jG<3e7G1|%=@OZV50hQ+ z;18N=qW+Q-@!@iosvGorhgwzMnsy(?;2(8fw)n*^T+@2&+HboRVJu`l>t0 z{%v5!%68pH4KpmG`T`rqWF>3;>1R^c7kpF8x5gmYI5iX%3@(kAe6sfQ%d#L|c0T;n z-kFqHoMMrk@g;o3@_=N2R-1y49;TGFur%1x6szWzH-p@{h7#^~h_Zv6(hWTJq`ckt z;~Ho4j@TyGEROs>@%Huf#3PSlJnimLKdO9M&!Asj)99J75@)7WSlW`?Y7^^m)^^Nt z|6E`u!2ye|1G2}6#l;q`=1`me}$X{IRP-T+`#Mlo}=9kxqLd|C-Gl% zi90PDPyuHJt3eT9Vg{j^>!$Pno=E)P{VP~TH=a6f0ADm>=&nlsBLavDB7n{*6BK`7 zfcxTw&|i*}t2{+Hol;(A_k*$$n^!ZdK(wyby z(Y17i-Rp=vwszLF)Tx*LlE_^w!f8_#OVoTYNq{F~KF)-1&V;6E^Z<+*nvoP52`y|_ zTFwn6AdC&hk!NUY>3yR1gopOxYAZ{q%a8aM-G`*xXtY3KjkoV{yXNoMPEsZuP*yX&FVl|PIsc##06G3Nx9)TSGhI}x_mXT|~(Y2P|&-2%qd>zn# zjQLl~BWHZ}?*@}LWBu0;nugUt>q{6#2L=rLHt;*#hB zP#WBzq1cmm-XIKfvEAU%-1X)X7Q0#T0FSE{``S&D&(3wnjYeomtxaoZh_Kj`~FOk@yh{7!g5e*d%A+baL-`&)HXZ0uWqGG8h@_s6^j?#V1mS*mK( zh41v!4ow{QqLB4p@r5{FjaL5?)T@@L(dr3`EPQY_Dt;lDNZs-TF9AtSNaH&lkbB2x zaPh8_KoeYHF~UwghkkAy@)PL&gzQv7e+py7Kp$-Ei@I-YEM^AA0U*|`~98vF~u|g z^^Jd@(AGEDQ(YEeD#E-Dx-=VwUBG<%fGZSB`4%0*$8dZ%%FBGVh{F74`TX$tba%BF zlx*YwhTcJSo7L+K9>G^)=e?7lZ;EX|8nBKAZ=H<-RzAwsE+QA?!0e*Zp)oa&7gW#m zh3R6kCQ;(3Y~BR)4zST09{O&mBi)`z;}J!Wg9B<2tM+9|@OFY3!cOC*|Lcy0v=Qd` zT7}VS6hzYm-D5WuoP_~|WHKGz3-#N=QNlU^p5Z+&zA%L?OjLiVim%Wp4TE0*3H9%T zyF-5;>F!^%*WDtf&|V6%QxT|G9L%T4nT{efgCiPC)5LF$Wcg>L57>Y1@*+&$9F^GA z!85>~ek3r3{?A{Eu&4t9E|BV;AgDkJPuJBI+c@Y{!QC-ZAl1JVI z7BksBPf_>9u*Mx^4BdE9c`!!ce5M6`BP>FydNcKz`*VxV^bV0t{7k6|wRAH4CK#Y>GqLXmc9 z^uX=!5sp~p>U5Iv7yRy7-CjX6 zt!+Xp_G+nmw@qBhdVhsX*i(dMyZUb5hmIfp(Tc3eiN~77M$|XkiY3xO z=VO@6*kFJ5ubt;|QGwF;aunA}>tyuAp9;?uHCv+}nsl7XFcZOa;7&h0xUsVQ#;@B~ zX<;SJzQbZeLp;94(8^+{;7I*J>x8?dXO}M=*4`;pWEWGhs9Kn~7|{KO0UUo4X&DO@ z;ZxbsN>^xtJ5s_iNT10O{khJ=4x&$tc1u#d^A>Hs+*I8wcSE;Jo@KhO5$o?uQ z)nFd~!fe-erT%8&!1(2Y@CI3v6bqi+W{o+OFQuXV zO&UESIjh*x^#z8B|N zMxu)?P(b)ls>4ww=YT4xsctr@u5C(TM~?5NNHD|y--f2(HoSn0g$#g_-4GxSTl?c* zaoF9v$98RsH|&j!E^?mUzn7&ty+D~^&q6ql+@(An-7R7h?SFz*_cF-mmGY8xNTG=3 z@d{&RRtIXeAKS%pkkYkfJGB6|)A7F|taCer4@9xXsZ@L=9x7_N2B($v@s-<@R4|?v{;|7Q8#rKUuO;9>mUyuJxSEi#lU zR8TwB`}1>gNX0eEd>{42h+4idhiel@p`@2*c@MD=(0!b643@Jt6 z@6+`5sC~N!MQ2~4pO_0){wM&O4z$#3qE2dfZNqurNg?hn{m865)$*p4aR!VJ{K8wQ z0IGm8IWYs~c!`;VoCyPjx;~6xSl%cE5P<=PU}ZZ;*vWtsv?(Vu1+5Q51_FT|CITw1 zku5$4WUvWr2v0Lp$$jE3f`S8m_^|?LH$!=1zF@})!;IqG(vy;%XgfTcvL9bo?6)Cv zZI0_=;z2<%hjb6Q`YiX*$128a;UkkYP+yesAsyuIdqFn_(hFY?kY>IhX=TXq7^EX| z^N25=xz6#MMZmli6q_?aZy%(&=~5K4>L9^6ty?7(Uk#-%k)Nh{Kz2Lc)eGl5%(Ds1 zD87_&T{waN(Xd-17lOf`G+qR26w-XM81{Wjr)1xC@yeLDX_d!cj+`^j?e~cf+xHZS zd~{>DR))Zi{a^wwO^A)+mJ20dL2+ujsK(C!SQG@g5mAg_?o&towUPPhlL*o$`V|Kp z?`lCHaofG(o(cp1w{0Khlv0lM9xeXZb<#HO@U^Lf?_%_hzG!+Y75K#S0v zvO(sGya@}Lp|nrSYUH;gotD4Ol3ZF{rSBofGJO^M>h{QwXC_m4zV{_Q&ADgmdjB)I za`jcOv~PKy$)Yu@f$np6J^haoY%+*jc}!xR)gV}?xIg3rdj3!P`PZe&iwE>nfKe{# zE^ZdpowO>ob51jx6Sy{SI;hxf?*G$MwQ7KB5i1by*}mZ4%qO=Y%<|aK6UT{kM)NY9 z+8=rVHJBFry?0yZ{KC44)v@+dMdh#i-!^15m4zKlm(Jm4<{LChnm7a+64vjBKHccvs84p?wO4mG3*YcfIEMq72s9I{OFiGa|f8 zL@DA8^ix`YW>4sLuC<9T*Ne>xbyJ&KdBIo;NNc zmqvLQ?peGS#AS4%@ocgSTmJrrI!T)fkb?rFMZe5&X1>N)Pap>T#z66zI@Mr`vO9{y zQA1p&VA$a*WUc+)(oEF|a*$c6X<6PVwb9mFZiTO!v<+Ig-Rhju=%;g>s{u9g=<4_~ z>9MwOWD$`hsuacGryDYKKEd^!6@ujJ-vgw2H3VnNGKLL(-aD*!n7w*sAbN4A3Hv(X zNb;!z{PNPF&vOaAvxpJ`X+FRm8@kz7-L`8+OacH7S1o1rdn$C(UOQ`ihn%uojy|pL zGyNJDdAw1-$u3HQ`^L$82HOYoYu(M~{G*@6YD+^R~riolegl#;$)C41H-<%s>K* z=PufBmTZPcU%qSrtD!_qlyJQ-AnmChXNA`-{r=JRx$qai{ZSB0o_rw%K-nbZWvcuX{}=Zsw4OCa1s4?#6IdGLzNJ zDBCAADM(QL4x?7qh0&dilD`Uo&S;%(hC!yb=Pt{mu8rGn&P{~vYl9o1yEwhyDAC{+PLYLp@%O{CX|N)bfF zLKUJS(gdUjDG@}vL_lF^2?|IPqSA|mUR0!aDFNv%p@cxnd|PME%$%9?op=4#Z>?{A z?>{c{@a$*zd*9{S*FBXS%tXzqlXltJOHYM0x@g&1U_Vy*uVH45&V1+bw7PW9{l&e6 zFH>yBfsw*~*X~1$mK-?#nlCFErXqmU5 z1k1_@4C-!~)fc(>K89DRXVtrXDe_`T)v)6{PzH+IpToD;^at$Q&F?EKCLHi$+EK{?AYzQj$yZuzo^eJ z5DVXZj78=_OS*P+AtS5Q9_#S>d4Bm7T`)&GE=E}z3YXtU8u(Y zGm20_nn6>bcju4zpUc<}Hf( zmCglbst@7@X2CdAshh3Zn}Z?M*T0z(%eqW0$r0zA{EFycJZse`*29vVJed4wuNx??WtcpSBQ+Gbso{rzrMqg4rY6)v z9(Gv~*Gb}=4l^WP&_cnkO~WQm3h$${nHW<@#$*Ww%2WFYvGkjZ+G>wYHnc8~nxRVi zI0JOuKaHy`t~)@GxmwQ%9Lf?Yg6QZ6zpVPjXMeKRBBPtcGD>2fb44WdyYU~El9|@i zpUD&ceDZf#KY{Uo2dW>r>-)oW67XsHX*%h>s|TT=9~@S3DZoGd*p1OpzDrTSH|rHI zC6A6jNWG`uQ{A-Rj_ct;`A#~C%(;-h97aVt(@y$sU{giYvC#67u9V%U{(U(C zvG{Q{FyrJG*Da;3iC5l(X#5p+27`|#QDTr?ZZbvcTeJItd71+g$!bIG-6j~qooI54 zo%m@;)U%miejJI1W}X>1Gn%>@t<0^j3Rzb0#M(ouHkB!9#El?E8V7JlpeBnT`1lHc ztku^WC(0Bb=5;CIBUYROaIlCy#!&X=N-=fu`f+{S=9N@aQ-yJ*_hbv0!c$nuChu22 zD(;E7rW9FpoaEtplqRApSw_lwLn@2xJ2X*VeUJOpB-O#}O!DNIuX2Kd?S*MM(rJfq zVDw;*kvtLf);8>H3y-!bQg2Ab%xOu9Mo(uGnDgw;OQUq3MN4U@^7{!VMlVQX-68zr z&hxn1$&%G?LK@WrGADWi<;A03$(y))*lR7ItY7gSSqUF~xct7|=cY|V1xwK-4Ms5| zt9g4nvJ~Ye$!j_W6A7iKsVwYWsVGn`b1l@a!a2#gqQ36jK$|{&ZLoINaXw_;p2afj z;g#<==ZdG$J4Gt>6U?=Eo`_)KLT?hS-*tD^3Cy$h}#Up@VcG>EYz zG;{@vPo6%#++$Qk%Ds+XQU5YGc+C2}_ky@hjq;n7iqrdUrQgjzkDAKwubVHW*pb`` z^tPm!Y>G2UjKFW)t$97yNrg{$l1L2Sdm5f=CmsJuBuU~;xGwxV($gS;#Xn*Hab=z_ zbz;G-=wrbWPQ*P-6x3-frS_t?v0LBO{b1T;Jq|VYyjj#FjWTYIXHll( zCwzRFG>ciq5nczReSX=uHrC`zV=3=%Es$GjeJy)$=*@d^hY`)!Id+FjPwdlMvkb9x zev$F%#{J}1yuhuc<7S86 zF%lm=&=8+8>HqMXn{9BT(CJEoT!>EyA-rLYBK~I4H#t}#S+54hWh3_X^`(iP8X=bnS|G=4;bhN4`!t?)o`pf)f!lUl89?#qZ@O~xGvtL|*TZfe`; z5zlw}aT!US>OWH25hA6cwuKy?Cq5d0+Ee*qeeSiEZ#v!IPBh4%f%DhF&natRk?Xun zdD4!#xy<3jed$tRV&+U|E&&{w2x5125A^LYaPfAz4_4eb$>X8gpHQL&cDNY8WG#z z@)_vAu-*ZS5MWS#HUg0nn0c9(@m!+V+{-tsw66J-qemVU7Q!vZInH9ya| zuatn4IP3@PW$(-kjtv7Ebx?EgpdZ^2YYAkVw-i3|Wf@p+RMg1~5 zL|X`qpzY_YwC<8V;SU>>m~RPgNf(86)7M=4+$P3;Q4nm?#u9xNsS@0a>pD3j^L)^i zHat%gQQh}tR-j0C(aIKv^&1>v@*Zho%3yVG<(X3M%N-U^MMsMxe#bh#Uh$}d1UDl- z3^k^?Si>R^45h{rmM#yMh+Qu9hdDNm-wWqeNwC=UFcKC{EW41t&$fZ+y_2=FOw*-< z7uS#v1h?CY_pg*8j|O*5Kx!-d){13M1jJlxm{T?EG-9UC7}CYnuk2 z`wEh*<^<)A`sT!&XkswVy3{C(PgfSXn=o zgzl5;b6tFhhO-F!E-n(RsgAyytA5uBPOfnCIBg?JAbo z!y8`=j>zs4Y)vNf1%FAEiA&6Nf-!7qI4Wucz!mdcSCwU|b>MPY^$hk;yE&88?mthu zdr55@TY@oJJXc}z=+^6!HF!VbUGho{4@K-WwxlZ@*uu&t94GtCU5A}&iH%z^3N+I0 z9X~^c2w9bzFjkPc32N8H=yX9BkEs`AYu$$#bBS2#5Uz2)Dk5rbzq5We%=i5F*_V+I z;-toCzwetjD#5V?C`WKT?EO%zFn&cyf|^mQ5QyUHyW3YPTJ`SRyOE2ynX-ph#6v9Z z>B?>~B=CqP4z`gs1BD`P7&}8E2AO>z(d>~kDW)H)^B*@5Uv*7xL|xu$00I7$W&M#p zO0;wf#_WDkXdV-1=9*;izxEo~oA*Qgk7f|XXj7ED-*)cJEFy4G2_s8#KkonQcK)$R zd&ufrv=_|YJDFOk3Uxoea@q7}*+P9VLHZ*@lxW74p7aOF|oG{J37b+0I6r%W7Z zECY^MpJ^=XE-4?UiRkVGAz#4Bw1U82ezwT7dE+J8Wci0aLVFAP1w8+i5gM{sEr{bPp&5RWVb| z2<1fE{#$*HY}ba;)@^41@@)6+Wa%M>U+KQEE$_D3GR~vdeStYgbFvcPml%xxYuZkeQy)GCt<#BzQP0YwwW7&2+KX%O_J1qVdcfa z{b;&ZwV!~wi4W^K1)PxmAVhiqpG-v((SWZ7mH_(zp@4vYBzAcYzy{8zVyzMXbNY?9 zh`Ah)d6EgXA&i)YzB2ilN&{R*9x~~FDD?~J0$BMn5!8Sp9{~rUfi3;#;<(X}Hl4km z6~;Not~=-G+69uDg!0iTtm^qM>g<4w8g%o58s-^*7JtJ{ zNd9*y{gIunfAQ_&W&}VM5GMCo^S@9vRj$JHg1hQONC>hntuvo2?u=3@?G7}5?Tqw$ z)fObNf7eK3|KsQP+R}tSAX9?PT3G`ZL-mz9Njtc~%=H5X+Vym0UoFkR3f1GQ|>e+SlZsuiVQAhxg6c~{2nn8 zObQ4c<3a;Lv!M!zNd)y#>u}c`g%#=@oCG1A!nDEmcx!=C5~6@06aYHyNkM)3W*UFj z$L2|jGZv`b|5g_IZ@*+>U8X7YJNkn|lX$oAtUQpyI9O`3E{%#V9A4ZLfupWFd z6a(D4{RDUToa47M_P6I}1?;97sUd;V^QZhx1~1SQ(fE4XW5AN?MNBr)lv1;ztd({c z*O1+aFc@AR8#Q?#kd?7%{V*JBh-zi7NsE`wFEH`YOfXUCJn7FTjqMT5|tqaXwpK})dj^9Rd*&29?uuNEKRO_Q(>J7BD zNRs!HEY)urY9~MluYmcAV6I+O0D2UHoiq@jY3}o*DIbauQ8n( zCPg(e9|W&W-q^TKg=kw;m7m|&G5STJ{REoEx-%&Hp}g-7VNb`MEy;Tq7h&~KHj`(L z%8*j7b}u76-=>mHr^`JSOvmF|DFBkr{z3OaaRe@k{df$82-1*12w5Z3HJC~{19Ak| zi=oHhUAhGO$;d5CRNt7@t?>!l7Thw7+x9~4=!A__)Y{!R)q!5Uvj#Ksr;$?Cr{8xv zQGRSlDT*=42;)qXD<^asfapB750njAiR2@N(Ueiat?1QS&YcK*Ls8deao za34r{hE4z|D%>=o9T#tcY;LMhcR(7RtbhAeP_D3x-530wDh*)H&J=IJx1H96CUJsw z%U7tbvI3cggjc_S9?@2$nBu=8aYcOgH3M>~)U3l?4j!LB<;BOcaLd$-7X{lRnixoS zwBY+7vIqqF771}1!*qCGlBJ;6r;_h{S5&KH>`D8*6E)DIHN-f4@@gT_$At%jWhvsU zKDcK*hGpH}&#vEL4o;fW_wN(Y;IqtT?mJx&F#YjvvulZNaE<@5=D^b=F>rmU{4-mc zW5KzG)30ml>G*HlHrtX6;0vq}&VG^O9iXyeM7~DSpK^~bGYS8dj$5v`ttnXio}@n7t!w0;igpLaOKAV3kq0k^2l;%E__VL<;mVVRdvmEM+cA<%Bsi!BqHx7xMi1lNb z!^&-cWE-+63D6jR84vF4ZA>1auo8+2v~nNQB;bh`DjZ~8OP~2pk7}ZFA9(IVKbkKJ z^Gr(@dVTAISv*-1SQ^XC=*>n5nIZu~Og_^lyEt|#?HCE1H%wA9toKwMNKJe<}Iz?MViIk(=qF3OFFKc+AIN z>1O&7jWMK6KyJf3vrds(N07E5W-W|jLMznLzx0F)(OCVjb}>=F-uQdfP@FEs9{`eK z2|Ki7J6OsiWZ~T>zxU|Rl2DutJdp+mrwQU|uowVr{k>}ZYZ}lJdRpNiI>$twq-p67 zyw~Z_uYtP$wI~E%Tnl7{=1H)F8?nHy`bXve7~!m?;mq$@CZ{yCig+-5=6TmmlwN{D@bmi)in;O9aK^;tE%)xj?b2+FZd8q)#%B=HgH*tFb; z2F@W`#s?cUq4F-#sJ5hUmZLnz;p{JSsX<}8vUbvWu@|^+57&1FDu~yc#PP_NeVkl9 zJd=Mn-mpUeB~yF49kzxim8b38lJZ4DQ9 zCdhGKku80`NN_Q7faD{5fdFmn`+~a$JvyxMe&s;(J&-=G;lhao_R;gW?Bko>G3F*7 zWy!nw81(wR%1}s|<(F#~8TX=f1}v}WP~_2#bs5wGnJH?fHX|HL%*Kc9_u@{M);u3C zYc<~FRmt`+VHcb~^w+!Rs+P)_@QEV}w|t)Hf7P6imT#4x$f8Gn)St0AY{^>`B|paH z(~#GtwLo#?1xZQfvKH7CK{ma_%(joCy(dmSZku(Bcxhg5pOG5 zYoD*_mK%QE=Op6>=2aF%LTMATqA*2Xg){=Xc$QV^UB9I3NuK_qsPFSdLEHz~&N?sX zCnX%Nb2_NnunkhPs(YbI{fZ3O9!kuos?8KJs;*zA|M)ZFa{12~%%hzGU}93DP@+K3 zNck<5$a3QUUIPYP7F#5H1{MBk!^mwHXJJLndxXwKV z4#?4c!8b^f(`I{4o`|OkG~Rh)*dh=r`puK1(}|SRK{?tBYWBn5!?g|^?>Z+1LPO#H z)K}1jNKzWmwm=aGz6(|=M?DJR1k86P_^i?Ew0i;{Ry^TCp|LDm#{l!2R&Y0V>tdiW zP*|&=AW@S8dX$qEiHri|dEz9~RY{OIkIm9oO_N>cQtKn8Wdsg|b%gB+YXc3p;T9UF zPf_SvJq%nFKbjlx*Ar_l{H`b%u+!}QB&o_Sb6RaHU z&y^z%R_6_{I!kjY?LRgMUhBXK)3#%n8TJSm2TjPS$%3%nl;Lhr;=m-kzO^V4sdC#Q zc7MRVO^bK8nmk_{++*-9xOQzMdJqy4J7pU8h{?8p=yvV<`ZcGgPwBOu@_TjPUCa&lQ$5~7JfA#0ai>~rKi#R+bl#b*Djr#Ai58d?X4o#3!r7v0k-1* zYK6t|#Sk6(;sfTiet_vk|EwOo0bYf!7sv_WI%HeY!3xVfqFOLHngrb>fsWAM`0;A# zl*2mcYlL+2`3}Z|u>yS;^F~JN`>MLE7zCzc`3^oZoh+gg(f{cCZn_!+NXPO9u=a=} z6N@Ox?%AQ*eHa49@l(j?cqEgXuo*6Hf)^UOuln>jwVmklCM$$ zzjmjxS@`@E@q=MGvkudzY%-T9q$qGZk0L`*2`?*|o(!AN7}S(6*tT9}Hcc445SJn! zUl||}jlNEOgPkg{GL(sXLcZsMx)^w}s%L8#EwnCHq5$zU_MGG~aW%62YI1!Xiv!3^ zN9dl&qhIN0bY&3y7epxp@g()Z99Pk8|(B}ax9@PsHQ*t0l&g&$pWU7!Y zkkesAV1u>42nd92ysnaj=zx2~^0aO^;O|faVBsldpcJySk-_60fgxb?A1Ivf`VYks zP3DM(TiAt-ZFh=zDVBCIYwRu{LtqpWS%8x6Lr2+Zk#ksZZAJ!&X~-%g5W?=Z;ARUq z1`Wj(VyB8>TmFwKXq=-k;MW5+{-;K}$IxyFyg+6G>+1I||JKQ$T?Qhz6Bwa%R(0SW zPdIR=hgKnaW|t;OCQb-Sls-ktk8UmB333%U*3ckAV zY@2o$7o2!lZrjsZsOn*{KI9AA zTc;CV5h?k{MfIw9#eNwS#eM)uW+dV7;A1oBW>>!!E0h;;6>%+TN$0DEBl=_|b=!}I}2yO`3kwIpo;xOQKokie76<&m<@^v8+CF^q~2 z57JF}bAhzY-|X_dqR%+;F6sxD(%mK`>M*{`s<2X<=b~c)ewU@cGqnt$D11ejSomLV zBY4hWzbzr2()213Gfe}*Adtm}{k|Bu4{+~0fINIm)Fo;tn49QD#P$mM6ZSyxf4TYj z|Ka7%eZRqH&P{nrCI8`h#%vd7-V1U8$pUmxnWpJzD=ku%(9FbRwx<2bW#Y3sUs>s7 zgLHWruF|Q^MbjN*6pl+#WGnSsKDTed1% !h}O$B}!FJ1K=dY|7Jr;Awul<@t~_ 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 diff --git a/manuals/developer-guide/src/main/resources/images/Add_flow.png b/manuals/developer-guide/src/main/resources/images/Add_flow.png deleted file mode 100644 index 63080bf81225a5daf618b7287bb8879a897e725b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47561 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 diff --git a/manuals/developer-guide/src/main/resources/images/Applications_AD-SAL.jpg b/manuals/developer-guide/src/main/resources/images/Applications_AD-SAL.jpg deleted file mode 100644 index c2dff5fbe332980ca037c6f22a258853e09b59ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87991 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%0Der5d$*DCJq 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

fYvS^_)2Da)sh0%cQ5#) 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 diff --git a/manuals/developer-guide/src/main/resources/images/Building_Plugin.jpg b/manuals/developer-guide/src/main/resources/images/Building_Plugin.jpg deleted file mode 100644 index c09495344affd5647d21ec5832e4c8d270a7b387..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90499 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

!BYD?7vLD-FTX6T68cT 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 axYQA}95ruRMC$ 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 E0l*3ohX4Qo diff --git a/manuals/developer-guide/src/main/resources/images/Code_Development.jpg b/manuals/developer-guide/src/main/resources/images/Code_Development.jpg deleted file mode 100644 index 93e60a7813ee9b77f8a4f3bc21f164731db436e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112184 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 diff --git a/manuals/developer-guide/src/main/resources/images/ConfigurationService-example1.png b/manuals/developer-guide/src/main/resources/images/ConfigurationService-example1.png deleted file mode 100644 index 686a42f08ca19369cf57c12b04adb1223588fcd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57746 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 z zqlld-v9g`38KL}-jXYnyite}4Elt_DcL`CI6Jdo#MdMc$yC(A9-TgylSR>w%PEgZ%@SKl>Kw` z;{!gr(i)@cqsiwRRWh54J!!>=vpeLgVP`97ybO~~gNX!hi@Bo;FiEYrYMDK#?N=DS zx#YmpsF5618`-)9tOn)4jV4|Y;LR2KVHx+d-Py}>M+-v~K)}W%w?=5oI&2ub%LggBVxhl~a^|NV-?g(xRgf10G2j-N zxJ@e`s-k4*US-oiN`RaaOAe~Mw#gaRMYeh8-TMg-f)xl}Q>xnoCZ`*Do69oyik3YY zg}llZJ`QR2T{|LO3h8afCuKM7TJaEl@uHVTSo)XizA-(Lp5xyQ!Fs>IG02K}fQ^A1 zi!fH?2`Lc|0D1RkthuqYrckNmx0(+m6|qvwXWD03!dQPy)e^&3a)cCmkwEBr9c)tl zkI6&Z2hzt#9v5cjhs}PeyPBROwg3BC#$lS2)f zjy*7$zpLnWnGmKZ7Z6rK+bUiV?^Lzk>f{%^jg#v% z?)qsu*W4|KB4ZRBBn;hPp3r||NcwMOLZy1;qVgJ&P|M{21X5SVbpYmQ}$&y+x_P2!kwF*fz(g{u6fkle(Co%Qq!xrKS zitVkg_oY8}QYAI6MQ!9eZ!fTa*IdFbCVFcJpT<9DPKe)<+8f&8xWNwEVnLeVF9D|_G z6#cDlWW$#Zd>vwz!Vr@t7Nbhgedtz^NEe()WA0$q45&ME?7CF z*_PFmWtiAUofuvcyR`8l&dM)$NtFB~fywR~soh%yJ@hbBdL_4{c8e$KbsqmL%d+4- zQo~Ebu62P|-XuCYsn?uU7Z&LX1$4NKdMibuaT5XiMfv3_=Z#^>Bl#mrLO1_!o*0>o z!Ip2dNctEM`D6)ZgNCcLB4S#p1g;k+_z-J{MnfA&nZ=@+vj>*G%9Yo^ol0d&<7}BA zZYU{T*u>PJIy05;L%b`(HU@&<(e=S4Ugv)gB<`e0&%TRX4Bl?cAowhu8$^w_fF$A$ zC@C^K*Pt&i+>&^s^N@Qx&7$RYta`d6im-9ESF91>AID;FE;6}LU9Ylg`mZJH@k`oFY9=yPyB6uvoYaBX;hy6U zh;P>@E`}(LkzY>T2I+3$2i`wy{QO+-N7c)cbiZ5C=s2ZZ@AKY(6m%FhUh&JFYpriK zorpIXRrN>sHsO?}bIg#(;rWNEZb>w*T6`fgbq+cw+dNm_5VWsZS=D3hh;FG4wRvop zB}Y(1bWl~bRrN-)Hz|e+FddQCtxPaY@Ezyoxo`XkQ~M7-REPCb=R#dq?Y8UR?Vz}M zpI`Cz4K&gsj2elNs>&o$?Uk$SPDnnZdtFX>+*gsL{6_O(ho+h03co;ml#Z~SqKRqN zJB#O2d9Mj`g-Pcd-7ee}-pzS^xu`L`cYl^;-aclW1sYYhD`9a2@3=f;f-k!vYyh8Z{D zQSrFlMoDFVJ?A1vv zI68HRw??|S%*zf+jJT!C)lk_T#{~vuWJQ5l7Nx>fC7IGrSJ@X>Mx-UH?{(bEkwhfC zgQj{ayv3@L^*e2BjIU2~qlL?Cd9)UK8_LTt_-T|*&q31T(5Bpp6Dv9-_aD+C3#1_I znB@3f5puN3IZr3!gcQIq))Hz2W`wDhq1V2oex&}OljTIfb`-~-Zc@+!`C~czW^ZK} zzy4MipKt6H+CL;&e!NEw{%MyjydAUF5FpbQyEtbuu{0<`5|CSxiw3%@kQ#C^`pemKYQyVrZ;&h=l*uF!2EA-e4Jq&Uq0 znVavLeTRUFM@L}?6Df>=%}g?5+P;i|OW^A$`L)OND8?)ts%wpAN|SNx;>%fNC!!%( zE^X(OD2+8x1)%Tx!)2kkQiWL+i$`sW<_$skyg?#$$Fu*q7J$wMMiMzx4^$*lwo96+ z%f(Bn=w?Oj=W&21TRieEpkitO@@*)u=qm%pR{{{)2u8lj{Ke8Oz6{F~HzPM~*h;!{ z(ObSOKk*o5v8GuvcO&l1Yg`8dU+o{Cen{6U?7g96KP32lQfk6QZCn#zy@GU)NoKze zlswQ@ypI7JQQgX+a!>tTeK?}$nyp^MlNbj@I2sc1+)N>0YZP~$tSK>V zB%u2V1|`uLEh3P6og9e`XFI}Yb+*3Q%o?>F8B)^ZcHAjYJQ5Sul`NDI<@%Df#Q&Ikg^uKpRQBT3n=rCZh{{k>*%+mS$!8+b)S{N_foZTxl}tb z<762UMbdJn>xuSM0!P(Lnf3_w9WA-T6M!7U!0MhW52r$r^rRqLLyb*W1mjsVN|;_Z zEl7p%2=)cx0qFI8{kQ+Gb3kPP8zke2u%$p>gDvRhhUm{$&#U~}tUKMDNj7j26A*T( zV@7qzj$6blBG-lrd(H`VqC{(FqXYyw#s|cjSSRvyxa4ir!YRqt&4HrHJ!yiv$1sV!-ALMDzWQS6VzotTs z;u7Q#VzGTd?v^MlS{U>eekAgZUjn(}hKUQj4yKvwFkNFB_F+z~CHC*ZTH2%0R5{O2 z`fjDrfe(`4hj`-~k52in6)wJxq7g!@_R4R4aj^wFG;rkU=fYio0hkU1&NPL-0Ye1| z;F-$}kPF@BTul{y23Z6g>CJblO~x9s1}>j8$BI&qD)kz`z80;6$4Nv>w({S`i62oT zr(G}b1;l5ieJ_^p&1f`^lT_p-E)df1L})PA1J&%1>j*}|$s6jo<4nSIf_(&x14YqM0gr=Na6M?@dwyLVkbBAhZ6adie#s?qq8X>=GuqXY00B^UTHd7rp{E;3PhF<)TGmXL0fUCL4yfcp{Q6 z=9L(Ez{g?Z=Y^3LBuwA1$f})Ht{h66bl31&^Q8kN0;+mL<4OyTB!+MM4d>x;@djqN z)!7DHVsu)umr$6gIfACrGpOon?dk2k(@&p^!~?Aa`?2P7w^6#c6r6R%s3`w7U#CQ4 zeD2^^JuA7i91!aWjbmEC^D8d(wTN6CTLmyo=43umEuK@cfO2z6OID=*%#E(sCe!Cb z?YSvS>HD`Ca$twxG-9lIFoQEtnkpY(=qMgMteOs?*ge+@KK?EZXr(>`CWw{Dsv^ws zT>Y3gR>l)2(`4LC7&-#|y{jvv2z~cUc}Ty(Et*C$`AIL6c@n;lb~K~Vx&nvacH<$} zV>Uw%>W6?hmIfgd3~QNHmz>dDBVhG@6}Q~zJa%rnQ{74~Bpo+MEDbSq!Dht-siWvv!uCSd zS!G1dmJE43BI^ymKXWwD+^3RL;tUIO-ztLXUd~#EFqhu3>4JYErOQM8kyfCYy#0c7 zp>=Fy-1QHrW!{jwod5Cod6#iDF6Gx5X|D4sX~bFNi)#S zALX>r2tyXc5~9@F!+R+>xD2mDORMfoF9tcwInx`CxEZ-_LI^dxoprkKl$w6K){^3h}epdgYUB^R=iO5p(DfiOWdMCW{D??a0pErn|dye z@lY*Ta=mN*t5t{Yk9710@$iX_iYv0u)37GyC?5kSSsYBlI#7f%DN+>msxMI#r<|&!IIot zc0YM+Kt-N|L!a{@mt!Yd<6B5)>RLhX*Y*n9e#CGBMFbQf1VvCv@@Q=1#LG*T{MKwF zf(zO;+$xd4P$D`@bH3XpGA>@wp*0vRk5_+!)3T5sWhu4yRqd&hZ%&XiLm1CR)g@rc zs2!CWga_;+MCUS#KQmae>H#+jR(By!-ZiQOiXNu&cem*K8tU{lFLZY(9opRv=jwlm zkY7>=5mxN}QHDmvx(Kqfp-X?d@ zLhA4_T7e?eyDgI7_B$HSd|!GbHW$uBjhpXjM~7Jlp_X0e#7Z-$p^ z7_CL&guhF8XHBBtOY96Zi~D`vdB5;m!N*0gTc%xL&hiDf^VP%c+I5QgRe zbxX@CoZ<^KcZ7Q^)ehPvM)wi=JI7~lQR+K4f_Y6mR@|IfnrcGoWu%QMOF-Yd&&IXi z$SnNqA_s$(wGYjdN3UlBXNIK+E=>F;2#&ee)<>_p5s;^wpv9VeRamFxCmegLy}k0z zL4r3hbLbA?Zp;7Du!E9Sv!u;U2Brl4fGAoUBS->!YcOMO$URQi?AFzpQtx((IzAn`N>ri<=%M8Y=WIf6cHY5ggRfkOw;7M`V-0VeA zuQBw>$7#Qd!*ORReJZ`D7i*e4|=@A(h{ z7yoCE=`h9CGzz-592wgeex1Do)+dP%j2e>A$en$8JV!&<4>GNy0^E1-am#@U54F{! z#Q7fBC0|uS8Hlnv)9jw<$jlJkT`*Eb2c91^=j*<00#wK+kqpcr@xhYV|q{kZqBRVwXCQ%DMcw z`WmAi&Di=ni5>MSM?3$s$IJxIHd7Q@-lsI4tO&9WAi5iuOsydG|LrI9)~Mr`&|aCj z7*V(R4wqpguQ2(|DxSJ8^S}r2a-m1brsoZV6A-)q84f^RC1>cn@?P%-2r2LKIY8+ruV-VI~15t%uJCZ}I(; zP0Myo!4}u6$VEo{GlYP_TKL`i5p28h`}5-`3$6jc6|lYfxi}om(9b$EP<76{dTd-e zwGv`#bqXwJ0(DnLzRG|~gstjMd)_;ry&mai|D!)l7htJ?BaVG-!qpI1x=Ppnf~ASe zqff=*G2}y)5_6zgyIQLoy7$~@2D&4iNuqv>xfopEog)66 zF*Wu-n;zSpA6CH6JzaNxXfVzgZSsvYT(Ie{m6B z|B>sX5x>2jX5KUh^P!=9&jiWm8($ye%9VAQClwAX!0sYp;I*6+F?QJV=0?|4drKr; zGlmGR1R+_Cb8S1=)sf@sZNuY5%SsC#FCYoXHO4^T7jx|{>!N<}Yx-!$pZv+(F#Wcx^7^0punZ=em%FN?q~IOiPSp?vsJyF zCc#hVD_Agm9MFUM^9W=G3{KxxKK%0^;#9}v47bi}W*|z^IM*H|pSQEFZ|f0Bv&-2= z4ri+U*&CXDp+;RQR{-dXHwYY#9K&S8&n5dn^}vgBksW@|e(tkXdsOjl$uNqNZ)*mC zHbiLk=C?I-Tv2&uGSES%w`1Z%F1Mwt?7P2wT;KGAuCG)t{qheRa{x%hEJQY;Gw+po`XB}daivkI!VXgx-H%d*1bX?4 z<2lFkKVDNDU38YEV1%u^C{qVuhfU6$>!DLE4LJWhdZ{pDxdKiA$GFc@h6TV&C_$Yh z@S#QppnxxBz45eVu`kQnZkMReQSC`UAUM#aHN7h9z&TrXFyHf6A=u99=|FDSdEmYevQd> zYCVaQNKkOC=?oYG9>EcqCOa%m&hx3m@%Buq0-Q~LHUF(c2A7(#P0QiW+UH)UQ^3PF z@>55dgH7BL``aM1zkDBT7!;U@Jk$QwQmj+)_*i8Qmv0?6nbJgmGt^RK(C;8sf?z)AK54A2X~)7fZ|b!Be!zmNs|iw5mrPny-wfV1*tA2JR& z*@!bHe=Z{^l8&!!u{+hG{pASYscaa0p`dEMXp{UnH5$MvSgt*+w@>Y?~v zRR%Jfj4n7+^qU*@;oz)b6vXViTz*V{RobMh;+rSC{#-pa8m|bi!Bo^x3)|F~v{3a- zbeg6TwhKJudL49pQfR2lPut0w>ff6C%|T7Jsn@y~4IE&Xm9&Ns7pex6H)S$aiubH{ z8+ClZ1JM8{ti7LOhnH0cT@COwlO29{oolP0QL2LA6>n4Qu6Z6&8j8z&z#%kwO!MdG z6E|J(Z@$vWJdVG7vU2B6YVb|kD$I1U>ZnUt5b7~g!>i!Go)dkq-GkPsd^G$6UDX?a z39KO}PR4{X;H|c6BR0hTcIG{)BdXnI=TWguiilw2p4b&&+iuKU4vsE$ysxk=bEAmu~gErB;F1vD+R-^Ovzjl0eS z_1P91*LE`{LkO{aXU02X>e+~H=q<=jZ-#stREM4+Q+hVJgLOV^Y8QA_o4}EGv_r?6 znxFC?zoiYQcGXhCK%)O<6Citu?e~v6661?C-)T0#kuAvUhTKD3bxB`83MS<&nNw$G zq>t-6k6EGTenI!M%%n3|NAmPG$r{ICm5LJJX+j>H$Wjmj82`W-9GDc9iuvNGbkisY zQEL+4oVR;}n@izkig&+E#4RO!QeqK&LeK9tdvVft0pIby6V>w9<;-jUuXYV1Mbp~# z-__96e?1r2N2V&{pv;-O)N3;RxHH#YY%WGjl82uQ{mg}=rVtB(+>r{+>xgf32Ps|# zRb5kOSGEY#3kX#~njbFs(2dWl8v9|*dQ_w$I*74F{OCZK7B((FB{Br7nl6ss0L(T@ zgo?LF#<(;1{i_Y&E1f$YgIaf|n1M(%r(Pq$yn%Bp?V9C$AXHTnelwzjpmcagr|K`t zFIF1opM{FJ$&N`O$H*LLF;@cm)`N(Ja-}xL2ZdGTb5AI+l9yIfgw8D#5-mA`K)mx_ zV8)Mo@uNMK`uf3~)}ySmIuIJ71%0bIKWL@Wg5A2>G{v5DBOo3HPSKB+=X?y9bj$Hv zjSsMef4TfTp04U4xV1+Fd{K_#DK12J#OM^D2l!@Z3$IO{BoP|_&@8O4B2V|8ja*dP zX`$0eIVIL*#u^8u;R&;$qPVXUBENvbhLIuEujC3(T?r$tYluHoAHVX2d!OPk;@bY^ zpYaK0=yHRrR)*Yf1ZxS^CLD)(^LZS;uY5>*5>VxV3X{D2bNk1R88P1{A{f%;JsuIq zK?noAG{dZHxpN#FzsM}37tP@bh^Yqpvd_#F=fsh$+^d9eqSWR0z-TCsE`*@O?Y1Z=z;k2#8X}Bqg7GrL z%g7hnUy*+HP%TmJ8i_*DZU>0skpjw@3io-_|>$ZtibrG5q@1REH zRI<4-Ke!UeA&jdujT$GT;iGHNpP1=p@wjc(FS-GPxcs0(u{4A$;Mk0A4V^zqvykVP z&c+)uGeS0_;p3O}i(%o4PC*mK*}am0o2y{QLjmF#;at_{*Y5gKYW4G7BX;+0u|*z= z`S^P%m)T8~b2kMoBBV{o3s(;X8Dlvyb{?e_h*WRw={90MpDQlZLggM^^BZcsd&w<- z=Z`<~9LA#gM9xxOzvei7WIK|#Ho^LJq9Ve+wIKU^77ZC6W>tA}M_qeMv4z@h{SY8~ z0qUe*y|4_mBB6%B$#_LrFH?K(IqWMlAClt*AN-L2v3ce%77oc?nx$BaHu66IhH=`} zMCV>QA6=={#Pgq#^CM?t)4nYne5*f2#A%|dX)i%}iy(w+ixtnmW&Bzew1}UOyeynR zj=@JFuG4a~5MK;_Jd+z`%0ksY!T6{W?&*=XP#_e1{aWy>$(>rh*1KuG7>sQA7R~HA zk}S?AKk1PjC)@U0QM(hF0q@XbYPk|h`_na)-{BH#*&Ddeu6gTGR?XM!y@-54%ER~u zAu4E>?&GAUY4l)qAf9pnSO0Z!wtv?kNoYrNRP{GRp$vEKpxs%i_J`|yxgWAsb=L)S z(WQ6oB5k(u9dsw2Mz+#_mJJxk+SI+BWs%8zDI+qkOWS^nBN^jOQqWpu`Hp9vd|cTx z^~aJ zIUrr(2E;{#5N<LE+7dFYP;UbEpW8M z0B~C!(9{2GF7bc&Twy80(Pb(MAU*q^k=;@hQ)&^e{Gs*#!4f3RzefC07Jx2 z2#2LeO40Se1uW{Z+z(1m8M*4a zg3>7N-@{e#b04Ef^e#gLFT)DomN)x+19$93+TIF%ve$JPrCp)k3ebzFsbdC81yN|X z)}M2b5`~!rp8qD=!vRT+7-kqQ0Z6vpx#SjP0tf?SyX-i4vpsl6Bn%8!Rsjc`Kte5X z$HQ!s{g>DY_e0pn%hRdLZmKKS(MBz0ac8+p!5+A5xphrLw77E8cjtxxJaE^-fZI{G zRdl#H2%oSC2;_oU9u*A8Bpk|zB$#oRfv!I`I>R6|G6_C?2)aXhG*a+#8N{Ay;PB(W=Yj|a_;N$kvg5@+&V}P<+F7VT`;BV?M$|k#?kD(? zqX;-FL_zUV0$S0|HK!@yoz(xTEEVVgU{lg-Z!e1#i^818pK^GBgcgkxn?-TZ+Ir z>Ol!6;ZVJhoMY3Mc`^>#vVwC!4V^5_!PSY&^TIe4eKA0%AHw)=P1ZK!N;IiI9uMw3 zh9+?|UI2h%pkEAniTcZ|?mXvdJfs~!CMo`#;9!uGC|f&f_?Z!_qrkE6DM)@ZbXxDt zu@f6jsMHVX!SNE%T+zN-&OOm;0qXl1P@a?5`X2n_Q{I58^^8UTt^&En4Cv*QhQ)YW zor5sJ3~Vbuw|_m*NlhbWwDv28bp%ak$hv=c-|jX6fXN*R*ICr~A_zWTC4swmDV0Xg zI*v@>5UiXH;gy}wI40^ih3h?udj-vPz!6AGBJ?Vh>~F!@Jub9V<=9gJx&cTHD6|IZ z65sc|qS>S;R?V2XjJc_9xf?6uW9H4VcLMsCnt%hu_MqotTP*?r7d~9SsTmM9c{^y7 zj;C=LF!~I?D!$|oE*?G`v*VMGKu56Pk>j{o!hG!*x`-pX}UfQ#S{Dmr)5?8T)KwEY-6T7o~o}uDgI=35tvUw#N>%dXL%7JMJJ`7?@in46#)K=fzvK|~${V3V;#5P3KS=g-`bsmtq0 zla>}Rf5=RRFS%YNQiHQk7>-i-j1v(MaX?pg3> zVn*{^4@xejiO#4I>ujD-ifc^cKp5#zZ1GV=rtHth(nt=OFv(j*f{_y*5oL(9k-2d0 ztQJ;F4e|m(ofhew9h{B>voEmJ z-8-^t#mDbC=vGvtXChmk1-*#k)MU#OO>EYJ29ZrSA$cWhM6lT9Fx&Dr=Yk5Xp&vgQ%7$a% z2Z=|P9=o9m-C{yqHj&59J$jt1q)$U&I$CCR*ht*0td$#*LfqmizC#I_X|d%v#`^ja zNnHN81Zhcm&D#MHbl+hC57jKQG;Jj-Pm;ePSLZ9CS$)Wk2~IY|$wL3T=6D895-sTG zSNIB)DW=@8P=990mY_)f%(zBm)9 z!>%&R@oh8t!@DdPXlv+c#A)9aPkr8K2RAYgsJtru$EQu%! za3-c3hG5jEPs5yYRkOvoD+J)rv7@&IAAe}HQlX)v6Mf4}7zF)>$w1Tz%#>j-Z(B6U zMbtpl4uIdL;AOaDs#si2iM?JXJ1@-18JX z+Nc)sM=)AL=L@Mb9$3>_mXXPQ!Tvy%-Z8#+PolHVu*8KDBu<_(0RJ?D8`+v5Y=QU{ zUGCc3)0o8#)Nr|S9o-rkZROPsFjzCXI#b&QZ&)mC?&+7=2A{{w-+yZgv*#k42t!B% za=pPF6{>c6xX}zcpv^ArM1`y8Y0K9UFVb$El^mR>KyWFO1xWDRB+`nUW`zi8=YhQI5iJo+JV$AXx zxB!KOE@3a{?*>pGv8+Hj9kL)CCYe{UuuZ$p1!2T|b6`MUmhz?Y0_xX2;m#l9d_;;? zaK%%iPHlcgYySDWtUe{234P9!equfpGy6B!tSmVe5G|aiZNFpA^!wWPVE=sU`7ip9 zO>epF)Zp5ruRZvH0p{=skf$ldut>BCHmZcS6qre3Yu*%q)(@ej1EJX02En#xyxQq0 z%Jw7bOh%UD)EsiZF7`ST{YvS1az`(5ZNO`w>d1IFV!qMFfm!jh>)r$&Ilsm@NFIFe zvKORKc8n`99*q=R>!%iiD?wK5!$~cUnEVdzzc^!Uf37-38b^tChMcvcb*JOxb+{6& z0IgTu?(^M!#4KX80E2x*4U#G#aXFRP)kp44fc)!waS5Y^zdEzK$j_5S{TZYp zxt$B$+qZFF|NT1%WukZBeJ~<{g{Ig!oDSmI?Q&BVHdw=8!Ldn?CM_k|qs$4t09pT& z0Gu=-1AI=7il;OBVYW(_XL~&_C%@P|Nb^sKQ(EyWAZkjj5o0vf%BJh1j9K-jNZ@>G zr5=XSSOs7#?vg?(Ls*ZgKpSo89eaDu3ui0y1)gZ#mL0pi4C^jDW$Rsng2%$icHE^G zFEcf0Y*SLGnWO1qVMD7R*(3^QDG40n3kgdjV>s@|8$?$+{TUmALrRSKq8@jeK z9J1$xcBKh^XkDaYG{3|ZA)lo!t}HVjt^V%9$d5}ojP%D5!eTsG0fe+x6y{a<2^_y= zu9`WaeG;*L9f^LTB%rEl%rs(G?qm9Jt$w3oyeWj3;!189F4*hBbKngG>+B%sKB?=b zo;?8cGv<(g`CG-4{ox{0t8 ziZbWJ<{;|q8gx4?v1D!l0G~r0gCjrr_dYR}NZwK@CMpd=tKQpwhPTE(OX&I_xi}xD zXiUQOqV0yde$C!1s^c~Ph)dz+<6fdF8)y-zATlBi1WPGP7L=@@!W>$YQUhcQV-3jY ztEt)|MU>M^VHUGWv*`(2vPbZihh_zYgfXx&1yY&ebetjl z4@%Vhb+1TMhMQZ)-#v`B^l)cK0?%FUy|mL*XE{6tuCvL->ZXbse`I>OkdCj4GH8ma`UD z8+rQs=(pVV2WO>kuU)X1Dw^U#H`+cOw~95SDtIYeRGpACC6S~>xF2xy{Poe;&WsNX zI8^oBT_v7Gz6t0;g2yEeC1vZ6Us$+gH^nNiRMx76{);A#(N>y*csFwXNCv6iIR*8u ztQ>hIg1oHP%;bzzRV$I#a4%(*^Ee1ezp1T;UR00#2o&7?Q{w$pEg7}+5M>Edl`;BD zh|kNSKZCUwW}V&_SHd&))+dH|FgRdyJ-Pc&bx_`c#avS96s!&J?i>!u(t7IK6w)8* z>98&DllG};zyk+;^TR!0QF$*ZqUFwJNA6yHY*4?|%b0?wTK$OsX*rkNIpzA4t1x8u zO8hESBzawV8dit$Gc|+A4>v+ur-M%Ef}~_>+yc1J+)%IN!I`-=hC?Ct(GLY^FVJ$E ziN?h)0_{UK!ZZtd$#UFjjm@W9^cK5d*cgs1U2Xg2bL-dBa2J_;QJaxPtAEW9dR(BU zR-AnVaEoSH2onWVeXHC(tRmcsKs)^8-+E9Jb$=k1rvpFG61PS5$;LiL{X`_h^ zme)-G$IP}_dyIBa=7x>-3)hEL(3znV#4CB5RtBfofsJM)O z96>e=4k3<6Xp^Ex73N(AtGU$|C!-c-h?#hzBt@xl#xn4n9^8c?(eHoE0ER9_G>33ogZ zzMs{!;@v|3qV2;_O$_cWC(I}{xM@+cxXqN zyl{NAU*>9^XHSaiErL)crM^-}7D7so(-Aeb-4gfY!qCrn+h~uAWhe z7e3dkUwQDwR4<1_K%%0--={t`$O~B&#LR0JMl-a{@NF`eBN9#H-*QEIMP36l64GGWZ7ncpA{g>9)CIv0c zD!Gza{Y@0kaZ47)%5CpjREHD|@4dzLJ@Guhz;(Tjrewq9O(GQ~eR;Wrj9MEenvNdH zeGku0@mhvfj8>>Asqr2K`z`3yoRQ|Do)SABw`C*4vmO3#(6=i%qtXPQ=ZNHnP)Sm1 z`sN#HJhTOIJ=%YT@-D~5Nz=k<<(KVkarZf)bWC+m6KGbRq{MuF#SIK9NvC)oWSgl&@5>k@nYDlyUE_slU%&>JNCCLVgF(It+5$Eo zQ(ecdpk>SXN8;Y%lk$g(j-PRrN6_BzRX%lZEJ7p%=J+%D#pC2U^oshj9h-aodquTM ziBV*hTX@gYP+yv8za{wtdS_=_g4Vn(^$Z86g!ip-mXM@)_mn{XhjW45;O3MmBjn{6 z@KjC9g*ApOnrT{Wi~LmI>!@CQ-Pe>5%;lFKqTq7Q6H~(l61ew_`JCVZA$)GC|DXp9 z4lJYwFTPMvj@dsSESGq%HzUm)>8IDUK^@V)*Bm#?DHPVZG^C+xEeOx_4^cEzca2|m zvVvZ`I~Z8Gy&tLcvvJ3BXC>vS)m)x)h;Zq7N~O>z^$7wGpeHC%AoN#ZbAv4$V!H=Q z1{9TRyG>h-Gw~Bl0rLkJCmzj~(tVza4LRYS3pT#^yo^_Dd9Fc_YeIB+KG;=tU4hxy zxUkW8L1}?)K-IY5@DrH|3&HmEP=s&qvNA&q9aYzm6sh;S%f@WopA}XNE4Xukp2Mkv zG`o*t;&#K`2rPgd3Nj#~I@9$FVT@-*y(y)5}h1Hl03cL-Y*X}-q8 z+qoLpzbRzl}qfrY9npL>|nOCbOF66=!{Mk2C@+S7PqW&$h22r;)afUQgR_liS z5W%8rywOF?a&!UOYy|mR1}_?n2rMs!P}dGQP@8_6w|e82Q;#$KPgWXDR?3#Og9y+n z@jvdvMG>F4ihk68K+FQGNa81V)Lr@mIkI#Q6w^|iKE#=YR6Mn0|y zTCMCwd&MCZrBG83f6cwrm;w)~-u0%%+`rPt0Uh!yobp_852B11-9;b{k6bZB&T;## z2gYIfe4~DEeY_eANH!6Lzwf1JHU1S!po?mTp725b%Jol;1>Aeq}@=D{*xq9z~G{SoNNM?rK94N zz(BsML4kjKlGRoN-{EyS4?6ZSRVo{+d&<#eZK$P^T-~_N_*m{qilbr4U5&ryhZ>6z zJT=R(im-c9J#Ek-BA~6~0{zXI%fi%BcHggcwiTQPE_On)e}~8Ms!bmT2dm{6U7>X2 zKEdg_`;&MJL-0>xkbidR9A+d8|OI(@d@ZzZtz zkwf=-gh!4M?{fR?&Ql##g)bBfgJL=UJ}>n)KeSdd?&_wQLO;u&sQu)g&ws#<6*|At z*OjL^Ud>}W_^GFUzP?#CxqESdf!QpiND;iTp`=IYO~T7dAH2KdIEBtdD3(hN$^uG` z@n`qCQ$4<~Ct|W9PHXZ*O|qSw{jPllBPI7@J;idsY_%~o042xxR+L=M{Z#3vMevWH z6$_!P(O!Sc^)LS^1TS)9Q!sOSK0->4sk4;#4;a7$-#)yzdeFd!Z%hr)5UCjVdtiU*cCO zKic+jGNGsEW4A~1!EQgi>?qcf3|Ws=*9gB8lx7ExL#$P5xw7F{McNyc^W*$+ z=D*`nBnqzi9=~9w8mCfj)bK?AN_Zv43}#Ri)h@RYwNB>dhPVjpDmUr8iiPwc#U4Uh z6^pC)CMF6gj!dDI5SAfpV;pIYThw6o;xyL&Sa>9a%QkjxZp4?{h-n^G!GWOa030N})66xZq6GaI0eYBN5MjO?9=2A^#A79CjCCzKQEh~;Vp!xG|?Rn`PLsgS&d5hWVn(qOuZQ^ z6Qdag>2>OaYeo`$Jnt8CT7u^q_EsXbgFf|-%+jru4snfN7u*%HmC&!LVS=vA+zKgb z+*IC_FKn4}4|1HFkUPk*HCIs=q1a>)FGO_X-c6|=T(Dbh{%1Hf^F1|%&wbmkbGYqY zpI_W@^u3r5B;m!ej-8JSr1iE8Q=YCUcne3!=i%*Bo_?V8FH+o68DeW|d+$jBvnk|j z)LaPLcWk|1n35r^4D{=mm^g)O#pl0%l3t}RjN=)HMN6H<<1zwo<+zEFa);sCS?l6D z$ZXZJbvUe>U$sPWQgF1Jo@s3}9kTVJG zbAENF%5H8yLMMHq6&7wSaEYNj&Z#v~cbr3}2@x;e82^U4F-#Xz@3W*-65+Sb?Zb_T z$$vPA;Oz^qv*v?2tFvIn@ky(%ZR4beFDnu5m~ihd8(FVNDbI@prGcNQ1!{rlAV&({SKdRweK{pa4dVFMxc)fdFiK45gw3kzEq~O`rv5N z_HTYR3#Wt@tR<>Eo=Ug+HpOR^t&i=eD1*}mtw4t>(D&MD3)&l1DGx~R)Bo5f8M0Hl z=udJ=fOq?=35y;Gu2u7o)t9ubatUm5?dyNTDsZPz+tcFyB0e8_@lAgBiL#IJ5DR{5 zCtMt|k@x`efm8UZ(Df`d!*EG!6v><{(#!!(g*S{AdwU${CddfUC~c0)W%~rvjzbzf zVvdNA;6#zi(}R%y6&u&x@cW4f`kNKhjqGg+ET?tevp;Mmc8~!rWM^px?`e4|@-YfH ztCHzu_K{9HEpc#XX; zlO{5EwVt`VDZbT-2x(O5Y5vu>bInW*c5_CoszQ30_S~pF{4;~#=hYo%Xk@g~eIJqe zV2a9zPmwS<)YP;&RCh|jrMFYQtoD2~+Jh_tyTZy#P+Iv|lHPN`bwEFzk>b%GqtHjN zK@`*dh71MIWXwp@5u8lqdUfg*nLn$qt(xAebe4E%YB%doBFu8&{PzjL+`1WZq?`IQ zC7eh8=rA-(Icg+;bsRj4w8#{5{*+`p-Y&eGa#R zbk%K|oSYXT3OqT~JoTn7XZD$R<8Y_4g6ZbX9EMFVZPEKU$DPdf+c7b{E#DT`>W!=? zM=$f{TThbqm7Ev&b4c%M^ef@sPqG}pFzrZS5@;|UJv^Hf%!!${=Mnc*(6w>=V+Ku> z;gYu&f)6zolcuCLGNwv>-ASh#*+6DD`no>!nu1!tD47t|;y3koW}g|t4N*UESz^x# znN1%Y)7@eMjF7LzGVys(o*%ddS$3(dX-IsN*$}v7E=txgN=^;GWm-K z>rWT=t~7@S11r*Zidmhhr@~y|Z5=fIM$f7GrI#Md;e`p;_|sz0ctPVt^51t`jzzP! zbqDr`6<0Oddg`@dquq-`bhv@QM8t2JM_&}5=N~2qv$-`RJPu7|0x|48kjb~yUMH8U zFORVP$*o7a;cpF(US8y&T8i1rSuFKZVGmCv$8(Dw*$wEE`$kZwYx|S#>V{W+iu326 z#gY#E%XnpMy6?0Ys#l0b`Vzw8Q?%>YD^?G+8DFJ%uqH}6L%}T#z2y6tS(+KX1e#jo z8kJvhoBVZKTZ%U! z!`voJ5CWY?DeQdcl6lF(({6~{_&)WWpz`i#;J9nceP=_(&;hdAcl2CJAVs0_Vl#;r z`(2c?WQ`hPbfVm}Elh?$Y3o?h?K5Lk=Q*9HF~uyKw3ank&ZiQj7sZ6 z{#!NCQ8rl1czJM3bAo9?o_BBN7TNhj7e8k-$#V0*ex&NJ=tYMjK0Es^y_^s7{wfin ze4Ra+4@mGK+DgzgKX3#bQccp&oE7zVc`0E{YTANWnwxjqK0ApF?2FUHjTMOAF>rzf?Y@cl*v}27tjsEOqLzo zJ!&Fp(boQ5dk00Opo@wLBquw`@?9(1ajm+z+jt?BVBC*F!fjY<+dp-voMC?M*JFJNlFV*mV_Ffi@;ax5O~ zRnK#xKAV-}!SK*E8Z)5;!N!|FXqfpg@)t|hZw5t0;$5sx>f?X31Yj-VX$Ls?D!P7% zkYq0|wCvnX(wGva?$TMJhvtt}7ghRj%-ggi7|yst&4XQKf(^n>(r(uahk|$>I6UFZ z}{(1D(kj(zr+5O(w{(KSJW~{E9}fN@5jb9 ze_KD>!gvyH4wp0JrkI}L3PKd$z6pAln6^BUAV4`mwJX?(E@60L4SDFiTVyIo4`uS* zz?5w~4Z%zF%?b8)G{H+f<2v9^9V$ArE|6-pvkI=x?a7EUM87E2d_m{78gCQ+l{%dq zM$hi5U2qp29oufmSA9~poTFj6$x>-*EeGGC zx%xtz>WjK>1>@Gc8-3JKr`K#cB5YKN7v$9qWVycsHAo)I)8{w^<~o%=g zB&dppG?8A!Ars2-TDlctuf3|njzK@bZNRBDnz9~;2vZ!@smN-H(U;KK>*yuL`)pUQa5BF;Q`}k(ntkSXi?k1?$3?QFuzb*z{n#W zw)RKT7pJR+L6)u9n_rw1&!w-Tp{76br5UkGu1Qz(%^NL3AKc^|WzuD$9i;9`R2NWt zOh=n%RYcOqQlj+um*7>U3CaUb6v<;!YsPZN!V748a4MVUmGH5Ub801g37*u8@patCrmDP1m$44xAliF)R3Agla)(rHbPcgIzUF0v)hZ28(WuiqvtUhBhqO+6L zj*I%{7i?vBor;*;!BwFLM3*Wu7P1q6LHVY(CSSiDgP@@ZEb`BFHJkVc!M!csHkr&{ zM+@k(lH-a}FS-`7cHLkEZy4+2<;&@gjTJkQv5Qk6^*bw!$`Cen7 z@Q!38(foQMd1Za=`zOd@CwsI&MqFOzZN(}Y`;MJVp>+%0U~d{WjIPiUphx!{I41qf zLGzfZ`7{Miw^)&(m?bCi>8JUb)+|FE9b&J(@b1MUk^f)^a#6Atsj&X9^Z{-12WnyS zjn7b5sRDEgc9st+#cE)r!(mTH%i+(` zn{P&m5ZtZ7Jz^6=T;p=FKUM(p2`|(eE-9En`1R`bf`?hBQb)-X7%IH9quMLCy+-H=!sHV4$_D!M4) zTh@~V!iawB*RB|hBOe|%(iHmO>mBYdlu_i>!j9=HN6~rkzJTwPrjj6pzpm-lu*!#J zDq(AhKNnv33p{Q$<~Q4q+Z*)S*kUkv2#iY?&quL-|3;%S z#xk0R&zddM0N#t2F0)Jt)Wz_T;Vlv#afA+{r8ph?S z8o&PyoIVyyhu=Y9Ca*nw*v&KVx5-5O%DcvS%V(S+iMtVl0t;|akIF=B;T?kKw)N7~ zO@?uo@ApyW!(aJpxVcXVB6BM=e0nLE1Im!U#8_majYe|_dw+YJVzNlf25@DCJP3{7 zV;wOlmmHPZiHd8wM1^;XmXW%=^A4M()XvpWlL@1xd%J287c;{Vz`Y;ehj`D)Q<4*E zYBr;b-_h@ih;Y-ee7|xSE`20Dl(~JA7{+x21{Xkk=j(qH)zBU}B<1Sis2w_bG{*{% z65FgigOr<>Fu#^b_j-cL{Mz;&z1g!eP4j5I3Lg;=$Pbu}x7ISx=nf9FiG#`AB9_`E2%cNdoli*hT*K;>0`wjMH&pU1ka{ys zw6G7<4XrgxNl|l;yF{xllUIx%YPyt$cap`@D?};y-fTf_iOU)o8m>hBF(|bh_u2G$ z*<#CMySEEx)XIW3Y+=R03|zyFeooCIUUxWzZvlBDD-7*(Hr@UP=SLCu%Hq{DsxL2+ zMG!UtU|;7KGPjFJm0PErj!x6{3`Se9lanikjdOo(>`FLDVJ%w3XtiamJOp!K=2D58^|b30;XW@LWOvgi*a+ASDF z_srv`4PQ{Ls{xZD;#!Hx))y9cg3F<0}kGgP39(rAk^fhF@rxxK+Z2yMrN9po>IVFW-9*!o|N3F5{N)XCvS$q`w|C ziLAUy2SMt`^?!#=?$TZEI%=!YC19biMnzC!Bl=HNeE^kg+~O{2v)mW4baP^fhN*Fg zg~O-gJq18(Pc-~d>uUTUvj)JjM5DA7>$!cVckU8x5%*}ZZ{2x&*}*%`0`^u5+DHa@ zXzM%D>jS$Qol1Qa)kl+#sZ&aJE@Bn$=;&`lSr?kZ`zUtq2hHtD25i6nsX1GDOS#sm ziq2N)q#(YQb0C#ME!#!yBqd=za$99GC48Tgk^TYp?!_5V0N3&O4604s8Ie94D&0X< zD@tEJ+?T{()l$&>!D`3bX8dE8#z#E9PRlisj?wf=;Dh0}wx5Y^Yb(8t=XqW=DU=K0 z(5&TKAMd@x(8w(xgTSV=2M0tUet*H6zx(lri)dn0@VE8I)PlTP32p(-Qr0n4I5B-# z$|#Y){!TBIdz`mDQctNj{1|bzXVAL1%rDVPwIqNIDmpe=LMi=0z1DQvofGuukh!#T z4t(?<;_d-Ayb14fNPN?YrcVQ#yZ$;Oq=$dBmQ?tJU-0-L6IOCbPhuZ!Y zua>8%xVYGFxXv|46a(`-vuO;eAraA~JFYB@$vCW8tTl>Cc&dE%2Qz0azoc_ZZ%D>W z!sfcnPP)6%~n7=V)nJNDE{vkxm|3N0Y^W>ki7Sp&_!2Ejj9Ne?P{x& zOve|w`0!@OySXWFH^)D9vpEqL-dYWw&8CoZc$&VhK~96_!oV<>Fe)Q;xRIT&y8e)4 zmI6oxijLN_&hu1g_LBzOh7$o!Gu%zGjkwC~Srm<1e z&W_PU{Ksv$Son5a{`HdsMV`Zj>vYIMMP3&7{_j+sukTde?-jvXlpY%$+!C+Rwc*PN zeN$FGyq!QF(cPAEIH;!g(B6*Ar3gu{a*`b%nsk$Gf`+>cb}d@=s3s-ujXI8zSAu&I z$5kTE9$%$OOL`U*-Vt->+IO>&zbf6nY?{d0dlcLMDmVs7BlVW(YI zBp+CxQSV(oz3zS3%*YheV0V|bi3@$uc7No}iGHW$#D-`2 zgkd{czJHYNYgzN(w1qWhB4X)zyjIf8TQt-FFa5<~=XG(^r@5{8XDOXef^|dcZh!5q ze0atOtNP+AMzntKv*-D-C%ZH&a!A^RpLPbk1dzn{w{*(*-!i7FUHJNW^W#RtR=N7O zn}V#117hBg#)4&>yLL`RVhU}5PzE1$UAg2oN&8)c6Blk+V~Gbyv3}ZJEDjHZk_(Lp z;Rd55rYP)ta*dQxVnG(pr9&0^wFb0@hfia?vvZLPQ!>UY^cMV z65nT0Ep~!W6aHh4Ub0 zQ#ri{7IfzN0a7i$r8Dt_9ygA%h zbE*+;hvgnD-JX5T{1rBsfBw2v&2}BFcZceIs@zP?=>l}x65pyw65_i_HH1<=ko4Fo zSEyqazSLWtBlz(UsI0y3A}#p>DUL-+5Ij+U4d-Zn*qI<}PN8?+3Di?m`GViS$7*X3(vU3lg@JD+PhbDZ+Q z3;b{vAWVhL)`Vy{MlnTqy6!A=2$s0R+zbMrj3JlUIc2g@P&BDGFL0kJ{NY*&5Up-i zH4_Up%Z~e@2Ml z1BQiXL|}&nEZePOkS58#nIg({8`4ge*+=h(-byO^4E%%@rb(?HmLXEr;vikw4*rL< z^XTdlUVaCXahZzifIcayZuBdYK3mN0mV@KqLmMf1kMVvR{YB#xqz3x%Xd9!^rtfHU zVhI(hmO$TY4g$Zr0{#+68c&}WXguZ!;rTMXC}cx;_f%Ozxbw%Rln`Z!UT zDy~}r9?=os%3H(8KADkJ*&LuixZN`T7-=Ew}N2B9kgwMQXll{KPAMPDeiQ=sgGL$`s;?Nf*B}IO8332vBLaJAju6z zh;>6Zb9`)vvR+_rg^p%jqf>)&bvD0G$atj(^XyZo|fodTc zvXzAtv+>xzyxYfaiquzyutCLO&!-}0YKYmf|9|T7P<+TbhT@vPBSKSgPd;(KGRWd- zFs?ms`_wMKa_u4ypcJviEr1WG(!J83!`PX`#>kFwv#X6~x>$4RaZ$t=U$6k)^|`Si zv((T9!N$wX*#=p34aTB$D(0~7T{LOLhN+hmOcY9?L=lRZ((ozF$p`^QpnW^@(#D#I zKZkWhQWaXqx17S|oyXT#j|SLZ{CvGJ9BNrT$GNMC1OdXc{R&db)e`VZ|L5C}GEY#c z1Fq#nQI2XrdPN!J$%$bAf|Zz1Vn7ECTT3NNk16&2v)=zNGa@n4X$H#Enw$g}hKU7G zPMi$G^^_}C$-7ri0*-)3trehN%iLe{4X2yb-VFQi@9+rR>lY|W1eFHe3g8E?1cA$m z`^5NBG@}tQ`ItpX{I^UM{$qFjKbrFY`!@c+i|xvr;UDjVupSLDjHYvNnWbdD0`Q>Z zd?|T$9m>MoOHJIh@CLxN2;;pZ44VZBA_XF5;_ue1Iw1Jo)Pnj)ps7rtBnHlw_&=l&dDoInn|Z#NgaB zQ4zE{$ZLucLkT635s4kGG1NqgZW|zmJt4%nxBE^% zk#dZU-{IAcog|l#^%$oy%*9Xw_Sj>}JJA@2Jd1%D>Ey#_oM^{~rqzaLUX%xS4iCcs zyU3%jhoi+nZ7D)F|NJC74gCIvJih1t7cgxB*)+!IMg_NNmo`6caf6sC!j=!~6`p4O z-ZRG{5&U}Ypx!HFb`m?w1as@-;8mb(;z}Se{I*)S7VJG02`NRI_)cpC^5uev({;a> zAh4-k;W_j8@!EW7KWdsHX#1nt8%z7wZ{F9Oq8gt964W-x z^+yw9h~P;aaItby?GrLCoe~pb z0CLg>VqrW)>=`k8N{j}ZwrJo`4MPByRW;?37Xw}ZgW!}^8@31P~b#eo6p-CXY47?h= z(MID2AcedC)iPc}!kkXB*wXHU4zD=iZ-0_U9?6t$1;+(GJX&U9?Cu$L(D|vYbpKiN zx1?@WVjh9WB>@;)3`gT6NYHMBBS{_;C$%)P74ZiQ$`%SB_SQzk04<+_&)EvNRvygW z=oMm%AuGl$t-h3)PQnJhFe=ajK+}E}Zu4V_>U*;oM)* z_;OBGd?D-3Q30%ktxwJ!J__@***gR0FPHQ)0PfmglB`5Mw!Ry0@fa~cNDBdkBYSY_ zoCnM%3?gJihb89_8d6Z5{V|VX_R#iEC~yH=2$Ar3&0GyXp;7|59$~Tn9)Ge(!W$5` zjK5~h$6B|dZ3Do0Z%$gmdNeTRAkRpSnby<6eDh@~f{phIW2!JFVmWWwwz08${B+w<}fhFX_~?%X@JW3$SV{`6|IH zS3yi9;;En|`=D8liU`b#Db!Y}rD35YhHVWiP{D}qc)JT;fL`>bi!18)kt6{=(recO zvd*)+sIkCv6(1Q5=c$lZcJO6sgl03c!+s1fH&c#MdD73%aJApm(v2v z2N>3~1h3n@3Dy+3$t_?}eoq>O?QFhl7zSoET61gP7>gXlw0OvrM9DsAVU+rSIC)I@ zAa3gqcrUz6b-;NPmr7pDc3JeE|qFJ8XxbP>}_jCIOx z1Ihgr6Y6nuC~4pC!<|Jjh6`p^(e4d)&YjDxx5TPIKI8~GgZ4=kzKnNR7O>8@dMQF7 zRdh5Qa;S#?Hotih@BZH2ie-FeqKQ`ROU0tRb4x<9$#c#V7pq+-B=7QGDB8Mty9%5pn`qhAcLVi zVSKTOnz>{AKU8f>NRD;P=`Ppz*m(93#p#-q8s5T)^9sGJTG~E~t?3gG)nXXZ!r#^T zf8`>UhfBg9U*V zo5R|{L{`0CGVZAM5cJG4kFg!lvotIngIzKXpbTfRG7F&q*EHWouU=ObP^y zV@x3fSW+T1RZ!7KNIKu^;Xv~LhJFV^t9KMY4;%;(10-2Aapoh2!d*DAI~)EZ8x%AABekxz&d*j}*R}a=LWW521x%ZnO?N`fe03^iZmld$ceh#1l3=HJ|#-m6awrBwoGG-{BW9P)~ z)n0Kd<%lSh^~k0i2kEy_^mw=q%R0K1DIzhATgJtp=>ofN5}w$YtMyp?R=;h|+K1T( zTdLC%(?nj_dTZn;Ndm_j=Gqb(iPBOj zM+5SakLm5^e>i0tqUoV}s9Z&8yCm{28#-Qc<%w{V)!WiT5LcS!72DIO2Sr~fOPDD< z7|hjR4U>-nNqA`$u&T;wcmc6d&=QdYGa?rudqf&QkRk+LXqSzGS7Z2mEcC(%<|L>+ z(0eGoF7lV;_6*Xm}5C6U0-|le3+sL1N@|Da3$0T3HYTgU zE}1JSU?^SPtz@l4^4Zbh5?}cX&?eFcudL83TFh$%iL!5Tn&BIa^8-cNAqhvH#*CC> z01k3$4tw&b`Y);kaUh!3)nsMl5iUb1vlen=z;*w7<@#Kr{ zzV*MSdcFj~LJNhWV7|u48=SsrM?>U%rhPTkovZQ-f59OBeh9oQtVXJPU$((oJQ+MA zi)R@KZw78@fWoV>@EMlty=HtXe8(@W;|0#V97tD+Gs@46Wtz}G^ZYp^ghxm&L#x#$Z z{?%F{!z*H!iQB81RQ7i#FXorcxrtvN<5>xJ2mvgwrGgLN~OX!?^KqnW( z*1fgCe%^T+kY=6`uxWgeJEgjki}C}~;}Wqzq**f-;i!osnch#$gm`e_Iov5utg9gg>MfTpiTfkM@Ha}F^ZiG! z2x7;W{FlJtO)Vi3kBx44;$+(_O@SDA$ntwhTPc@1`{UMM&|S`~6!6PwCwnRu&yLIQ z;YgHPYvjb=nB{JvBk0p`$n~>(pnEs?Oqc%cqgOa4fAr}$Z3vmFDEENxy7v@hJ98h( zp}5q&c<&;JXKo-yM0bTv@e3?-mrfsZ=GA7f@e6E znk+NlDZ_(wA(P%z4&T#XCLG6k7jNiw?aOhtqw~IYh0Uh!we0PDdpiLyq(Afve}c6x zGx#ikfv)95g1f!Lt7{-lD;KpBenl0hOP-89h~0&X%0_+w3;Tb(SJE(C;n>>W8da&n zK5Z39z}4uCC_1IfAc=44M11~H5RD`NI;|8eA?*_u=M1OEATZK~8jzB)TRQN;4nWb` z*^QKbymA%;pNjjBehb5!*yNyu5zj+>rT~BFUPKsZxZwTIUKZUAhYv=ZIR5esgQ&&R zjQ%+%{>gu2@NRgO0^>E>L>aqKL1q~l5|@(WSh&{GCE`Mmu4(7q$&yQX6+Qr-q|O>B z0Th+|{I7w68v1_idN5D4bn!a=Wj{YJ4YxtI(bJl9AP$u(45JoJI9L10Nm~}RqNc9$ zRE7$21_4;JR-W9QiXVIB;tz?q(vxEid;)$!gN5sV3YV)mPw3xt!)f%xnNf;$8OE1$ zy~U)_%k)E~U>%7eR$c>CcLD%d{9ho8pAlb^{}6AH^U56;sN)+(;~r=fJldr&t@fF3 zC2m=<;Ot_lwpP-LBE9ARe~Lpvgzzwc{vJ?206NQX5JC|W8AQZE0Jcum6th5)j*ia% zhc@vCPqhkW?S5?ZU}85Dyx;oR;H@~R*d^)zpQM=^Zrigqt_1$%ijW7x@cFh#Pnx;i8{sxyn9(+T692JA0oV!?$B7d-hSPLk)U1 z?9v6frY~lDXSGW+J3p8;ex)RmwBTiIX}lH0pZ%^XBvkqBxzies`BotiIF;PF#*fc3 z5d&jmQ~;f2vORVc#+%Rr{@MBI-zk;*Igc?wvK8X2QpVX=zJ3O#8W3@5+6?>Xa;p}{#6+om{DLu0;OTH%= zzE~*h{Fz zVeF+G3aywwCX?7pW!kF-g(`|PTuK=9t%fhr+dy=DcnT=0E|%4fZ{dP05+p& zaKRr3)VIE9`h^{!f>3eXsWT;jlA%^`z~likmeUxXcwPNobsebaj?-p98aa7_xQhQk zgaDot>__g-ybu=Ytuo$uPkA`Ecrk_O#7X+Sz>wCVI0lWGYc5 z7?qCsyFK6bhP&xxSD$gH!eg{7{wryu99z~N7{%#RRrjB8O@L3w34*yj+u+oUt0(ff zhJn}uU{sg$6e9epzM5HCeBS^a@b^-B9M4XU?lt+uX%^k}9tSpEmon_?pND{Gqw|W< z&T`}9W|>TP)WE{gh+sm zf=E9<6Dw@Y%B#L3dJ;gc?vy|g6ZL+sj0pyeMAUj5pp(S{D8dwWY^L7t&PS(hpA}0@ zyStyP!P(Bf|A`a;>1u8uO%RSfMbu;>shOsl<6 zy>=Uu)%L_|rTr>N2h~{O$uIf~F(Z6Vud=Pds2KwHfN636r6Fs-U=Ok)M+Zs{dx(uTcsD z(#u9*xKeSxznY3|k#@LATgLiAPOuY_KOlCG4Hp-XTi2seMYf5+efkVO9+4lnUST4U zML!>}(X>(1hZcjdR&(?HxROZdO63%lDWGLH*O<%54lR4d$kJ;glqD0Kk8Ar>igl&x zW+eR#;Bk2|>^labhk4``6R-gEKYtg(y%U89$4}recxU#tM<^J~o&H-$$v=!LHX3ye zkQB$xwJ<^8&vAJ`9rQd-y_q_(g};d&I!oYA6lm?zL7VBnZ^=j`;ZP52wD9y8uW(Nx=ih>R2!-s6WfaljOu1g=FUWr+=H#OBbQ# zfL6tYM(miQ<_ky7qaaa}Pr(6JMtV^-+qA@i$f9J;bELjii5~yAosNO|2u%G0=wq12 zU=$Fh_=#H;LyPSIB$Bc^hGa1+v4hBFS>Jxxkz52|N=FWqpbn5-ljiU%Dyf>k;U=rC zIr=FWZ9T%u<k3$KGq~e0O0>nMfC?-bz+n3;FFdrah4^bHQERMK z5^Da;*64+YiNa-mB={q@0=topP_pt&tbLDn3JaYuFUsqe<7jrPhfpz_j-S=Pb8VOV;ehH$$|)#1CQ^_Y|+s0e|VVE&UYS-r$`lXP?# zw36r#@3!-*^@Y=;7mmOhQ+-ajNEpUSegZ{mf@M2#I)SLxDi??9_Rxsaf1)A#$v*q1 z{8WwDncyo*y{nPbn!1HHn@-p_x|;?4p;o?Yz-}?kiJM( zNeMM$pmhR=_Md~=dWqgYII({W0#tzZbM1exZAFtFSHO)E+bR<$8W?sJVMfDa)hxtD zEuC$PeV$ki=JYA~>H0Yx-270|Q?wTc{w2@?Mxk-_ms@qBW(i~@Z_n5~b!qIh2#BL% zWbnb}9s8MZpW9h1DT+T?{T>O^oaDxnM0ETCWorX0i3C^VuCKDswXc+FAHQ6=m=gax z^rDJZ*03j`XU^8piFTG--_w44ccJ<0dkooQ=62=dmWR_}r%W$;V#CduhjY zuRkSC$9r%8Q{Sj++fXlf0Yo}0SIUQ;zrabwH2Dy$Ni|rYl$xTDMe!?1Ru|r``Su}4 zp=23^o@S*{yR{2gj8@NgPP}D=9ZI5k_OWCDffc?(sxPYc&g)UfLNZbh%^1{Hs$eJL z3`ZU7S@ZrQS$F%(0S{og<)2PzGowi|()*r}c9DF!^=hKABw3*wL$efew>mb{+&(}H zOZPTYc;l(hLw{uRhZS7>5-Ck2|K{CSHUFw>)Gk?nN+~^d{+6r_gl&xHtU&wr1RXDNN z_+Afb1KM5$|H3=y)~b=UG#)bR2pu|9%EY1Pmi><^ty-GT*6l)3e+Vv*5*NQWB)`J`fv1wRH&wzP4E>%OB7OBn!tz}`;X3U~YZ(Qf7c?j$ zJf7D0{MJ*Z(YnDONVg4z-)96E zd)4BQA7cN1aP{5sShnx~*_-<&EBhuRdyj0lk(8uF$jT~vl)cAoZ<0`=C>4?@$tGka zS!E|HE3*BLOP|m8`+fcV@w}d=C-=Cn^E%JtcpvZ4iWMSNk2vZ64E;Nz;qiWYoXy|; z+^~g+gMKvU6Y;^ToG+y_uc;_k&H0qyG7S35BGPfta46@ZTz|JR05tycw(G76R5+`S zq@mer0Y-0Zwj2YYyTL+)MDU+JZ96OCMk0(~xy;jN!RrqxrIr*q4IKncQhd*){reE<^A1))dNx8EYucKf2 zFg4SoTxoB8IS#*#nLfj*Gx!L*=I1WQkeIZ7$>pd=b`*nqJR4CkNan*={BU$=f8u#BK!jKzGglH%hQd!jr}Klx$a+%5pVmu$kVCfZZai96e>s9%n_Cp z5L*!_mAk^y&~`#8=`UrqH!2ciz{xvW$Db@C{z3Ho8^x5HdkIf2JiS=J#?jB1EWi<4v3~BhLIWok4Wx~33`>eN5vwn^vo~Mk13U%G8En3ww4$E{WyK!?Sf^iT0r<( zM(YZbY$z5lx1`XJFGyJ2Tz0}R-d~GXR?}k=RfEswSL1e)$^?NbsLFz-NaA~KAC4{H z>^W7;3~^NrSEeWnn%iVenQJn!t}XS;Ududdfe9qVs-`NXxjK9P>E)8*j6sa#IEpfzbQxjAuVM|b~1sM zWHqKg(vL)`qLaOJ1|ou9zvFZ9ojRe>=+9%PB`+Gkyjh-Og7{=dLO&G+&B