+++ /dev/null
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-# Copyright 2011 Cisco Systems Inc.
-# All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-# @author: Debojyoti Dutta, Cisco Systems, Inc.
-
-import sys
-import os
-import warnings
-warnings.simplefilter("ignore", DeprecationWarning)
-from ncclient import manager
-from ncclient import NCClientError
-from ncclient.transport.errors import *
-
-exec_conf_prefix = """
- <config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
- <configure xmlns="http://www.cisco.com/nxos:1.0:vlan_mgr_cli">
- <__XML__MODE__exec_configure>
-"""
-
-
-exec_conf_postfix = """
- </__XML__MODE__exec_configure>
- </configure>
- </config>
-"""
-
-
-cmd_vlan_conf_snippet = """
- <vlan>
- <vlan-id-create-delete>
- <__XML__PARAM_value>%s</__XML__PARAM_value>
- <__XML__MODE_vlan>
- <name>
- <vlan-name>%s</vlan-name>
- </name>
- <state>
- <vstate>active</vstate>
- </state>
- <no>
- <shutdown/>
- </no>
- </__XML__MODE_vlan>
- </vlan-id-create-delete>
- </vlan>
-"""
-
-cmd_no_vlan_conf_snippet = """
- <no>
- <vlan>
- <vlan-id-create-delete>
- <__XML__PARAM_value>%s</__XML__PARAM_value>
- </vlan-id-create-delete>
- </vlan>
- </no>
-"""
-
-cmd_vlan_int_snippet = """
- <interface>
- <ethernet>
- <interface>%s</interface>
- <__XML__MODE_if-ethernet-switch>
- <switchport></switchport>
- <switchport>
- <trunk>
- <allowed>
- <vlan>
- <__XML__BLK_Cmd_switchport_trunk_allowed_allow-vlans>
- <allow-vlans>%s</allow-vlans>
- </__XML__BLK_Cmd_switchport_trunk_allowed_allow-vlans>
- </vlan>
- </allowed>
- </trunk>
- </switchport>
- </__XML__MODE_if-ethernet-switch>
- </ethernet>
- </interface>
-"""
-
-
-cmd_no_vlan_int_snippet = """
- <interface>
- <ethernet>
- <interface>%s</interface>
- <__XML__MODE_if-ethernet-switch>
- <switchport></switchport>
- <no>
- <switchport>
- <trunk>
- <allowed>
- <vlan>
- <__XML__BLK_Cmd_switchport_trunk_allowed_allow-vlans>
- <allow-vlans>%s</allow-vlans>
- </__XML__BLK_Cmd_switchport_trunk_allowed_allow-vlans>
- </vlan>
- </allowed>
- </trunk>
- </switchport>
- </no>
- </__XML__MODE_if-ethernet-switch>
- </ethernet>
- </interface>
-"""
-
-
-filter_show_vlan_brief_snippet = """
- <show xmlns="http://www.cisco.com/nxos:1.0:vlan_mgr_cli">
- <vlan>
- <brief/>
- </vlan>
- </show> """
-
-
-def nxos_connect(host, port, user, password):
- try:
- m = manager.connect(host=host, port=port, username=user,
- password=password)
- return m
- except SSHUnknownHostError:
- sys.stderr.write('SSH unknown host error\n')
- exit()
-
-
-def enable_vlan(mgr, vlanid, vlanname):
- confstr = cmd_vlan_conf_snippet % (vlanid, vlanname)
- confstr = exec_conf_prefix + confstr + exec_conf_postfix
- mgr.edit_config(target='running', config=confstr)
-
-
-def disable_vlan(mgr, vlanid):
- confstr = cmd_no_vlan_conf_snippet % vlanid
- confstr = exec_conf_prefix + confstr + exec_conf_postfix
- mgr.edit_config(target='running', config=confstr)
-
-
-def enable_vlan_on_trunk_int(mgr, interface, vlanid):
- confstr = cmd_vlan_int_snippet % (interface, vlanid)
- confstr = exec_conf_prefix + confstr + exec_conf_postfix
- print confstr
- mgr.edit_config(target='running', config=confstr)
-
-
-def disable_vlan_on_trunk_int(mgr, interface, vlanid):
- confstr = cmd_no_vlan_int_snippet % (interface, vlanid)
- confstr = exec_conf_prefix + confstr + exec_conf_postfix
- print confstr
- mgr.edit_config(target='running', config=confstr)
-
-
-def test_nxos_api(host, user, password):
- with nxos_connect(host, port=22, user=user, password=password) as m:
- enable_vlan(m, '100', 'ccn1')
- enable_vlan_on_trunk_int(m, '2/1', '100')
- disable_vlan_on_trunk_int(m, '2/1', '100')
- disable_vlan(m, '100')
- result = m.get(("subtree", filter_show_vlan_brief_snippet))
- #print result
-
-
-if __name__ == '__main__':
- test_nxos_api(sys.argv[1], sys.argv[2], sys.argv[3])