X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fnetconf%2Ftools%2Fnetconf-cli%2FREADME_ODL;fp=opendaylight%2Fnetconf%2Ftools%2Fnetconf-cli%2FREADME_ODL;h=3a15454df9d837d2f3d68ee4aeda2df2635a3e70;hb=23fe9ca678ada6263fec5dd996f4025e4a32fcf5;hp=0000000000000000000000000000000000000000;hpb=071a641d7c12c0e6112d5ce0afe806b54f116ed2;p=controller.git diff --git a/opendaylight/netconf/tools/netconf-cli/README_ODL b/opendaylight/netconf/tools/netconf-cli/README_ODL new file mode 100644 index 0000000000..3a15454df9 --- /dev/null +++ b/opendaylight/netconf/tools/netconf-cli/README_ODL @@ -0,0 +1,154 @@ +This file contains ODL controller specific examples: + +1A. Connecting to ODL controller automatically: + a. Make sure ODL controller is running on your or any other accessible device + b. Start the cli using this command (in folder controller/opendaylight/netconf/netconf-cli/target/): + java -jar netconf-cli-0.2.5-SNAPSHOT-executable.jar --server localhost --port 1830 --username admin --password admin + c. The cli will start up in aprox. 20 seconds (Schema download might take some time on the first connection, subsequent attempts should take less time) + d. You should see the list of commands avaliable in the controller e.g.: + add-flow(sal-flow) add-group(sal-group) + add-meter(sal-meter) begin-transaction(sal-remote) + cancel-commit(ietf-netconf) cancel-toast(toaster) + clear-toasts-made(toaster-provider-impl) close(netconf-cli) + close-session(ietf-netconf) commit(ietf-netconf) + connect(netconf-cli) copy-config(ietf-netconf) + create-data-change-event-subscription(sal-remote) .... + + +1B. Connecting to ODL from the CLI: + a. Make sure ODL controller is running on your or any other accessible device + b. Start the cli using this command (in folder controller/opendaylight/netconf/netconf-cli/target/): + java -jar netconf-cli-0.2.5-SNAPSHOT-executable.jar + c. The cli will start app right away (few seconds) + d. You should see only the basic commands e.g. connect, close, help, disconnect + e. Type connect, hit TAB, hit ENTER + f. Cli will ask for connect arguments: [address-name, address-port, user-name, user-password] + g. Address-name + The cli will ask what type of address you want to provide (domain-name or ip-address). This is caused by the yang model for connect command, the address-name is of type ietf-inet-types:host, which is a union of domain-name and ip-address. + Submit "domain-name" (TAB can be used for autocompete) + Now you need to provide value, submit "localhost" (TAB can be used for autocomplete, as "localhost" is the default value) + h. Address-port + Submit 1830 (default port for netconf SSH server in ODL) + i. User-name + Submit "admin" + j. User-password + Submit "admin" + k. The connection will be up in aprox. 20 seconds (Schema download might take some time on the first connection, subsequent attempts should take less time) + l. You should see the list of commands available in the controller + + +2. Disconnecting from ODL in the CLI + a. Execute scenario 1A or 1B + b. Type "disconn", hit TAB, hit Enter + c. You should see the following output: + status Connection disconnected + d. Use TAB to see available commands, only local commands are present now + e. Now you can use the connect command(as in 1B) to connect again + + +3. Using help command + a. Help command can be executed in connected as well as disconnected state + b. Type "help", hit TAB, hit Enter + c. You should see the help conent containing the list of all available commands with description for each of them e.g. + commands { + commands [id=close(netconf-cli)] { + id close(netconf-cli) + description Close the whole cli + } + commands [id=help(netconf-cli)] { + id help(netconf-cli) + description Display help + } + commands [id=disconnect(netconf-cli)] { + id disconnect(netconf-cli) + description Disconnect from a netconf device that is currently connected + } + commands [id=connect(netconf-cli)] { + id connect(netconf-cli) + description Connect to a remote netconf device, if not connected yet. Connection initialization is blocking and might take some time, depending on amount of yang schemas in remote device. + } + } + + +4. Executing get-config command (get-config(ietf-netconf)) + a. Execute scenario 1A or 1B + b. Type "get-config", hit TAB, hit Enter + c. Cli will ask for get-config arguments: [filter, source] + d. Filter + Submit "skip" (This will ignore the filter attribute, ODL does not support filtering at this moment, but will be supported in near future) + e. Source + You have to choose from candidate, running, startup. Submit running. + f. You should see the whole configuration of the ODL e.g.: + data { + modules { + module { + module [name=toaster-provider-impl] { + name toaster-provider-impl + type (urn:opendaylight:params:xml:ns:yang:controller:config:toaster-provider:impl?revision=2014-01-31)toaster-provider-impl + choice configuration (toaster-provider-impl) { + ... + + +5. Executing get command (get(ietf-netconf)) + a. Execute scenario 1A or 1B + b. Type "get(", hit TAB, hit Enter + c. Cli will ask for get arguments: [filter] + d. Filter + Submit "skip" (This will ignore the filter attribute, ODL does not support filtering at this moment, but will be supported in near future) + f. You should see the whole data-tree of the ODL + + +6. Executing edit-config command (edit-config(ietf-netconf)) + a. Execute scenario 1A or 1B + b. Type "edit", hit TAB, hit Enter + c. Cli will ask for edit-config arguments: [default-operation, edit-content, error-option, target, test-option] + d. Config + Config contains the data to be edited + 1. First you have to specify a path pointing to a concrete data node. Use TAB to help with autocomplete. + Submit "modules(config)/module(config)/" + Module node is of type list and now you have to construct a whole new list entry for the module list. + 2. The cli will ask for these nodes: [configuration, name, type] + Name - Submit any name e.g. newModule + Type - For Type you have to pick from available module types in the ODL, hit TAB for hints + Submit "threadfactory-naming(threadpool-impl)" to create a new instance of threadfactory in the ODL. + Configuration - For configuration you have to pick from available module types again + Submit "threadfactory-naming" to match previous module type + The cli will now ask for threadfactory-naming specific configuration: [prefix] + Prefix - Submit any string + + The cli will now if you want to create another module entry. + Submit "N". + e. Default-operation + Submit "skip" to skip or pick from available e.g. merge, replace etc. + f. Error-option + Submit "skip" to skip option. + g. Config-target + This is a choice between running and candidate. Submit candidate to edit configuration only in the candidate datastore. + h. Test-option + Submit "skip" to skip option. + i. You should see OK response + j. You can check the candidate datastore change by executing get-config command as in scenario 4, but pick candidate as the source. + k. You should see this module in the output: + module [name=newModule] { + name newModule + type (urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl?revision=2013-04-05)threadfactory-naming + choice configuration (threadfactory-naming) { + name-prefix prefix + } + } + + +7. Commiting changes from candidate to running datastore + a. Execute scenario 6. + b. Type commit, hit TAB, hit Enter + c. Cli will ask for commit arguments: [confirm-timeout, confirmed, persist, persist-id]. We will skip all these arguments since they are not supported in ODL. Cli should be able to detect this and not ask for them. This is a TODO, by supporting feature/if-feature detection in the CLI. + d. Confirm-timeout + Skip + e. Confirmed + N + f. Persist + Skip + g. Persist-id + Skip + h. You should see OK response + i. You can check the candidate datastore change by executing get-config command as in scenario 4.