Giter Site home page Giter Site logo

acitoolkit's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

acitoolkit's Issues

Attaching an EPG to a PortChannel instance retrieved from the fabric via .get(), fails.

Hi,

I'm trying to associate an EPG with an existing PortChannel/VPC. My use case is creating an EPG and creating a path to a VPC that already exists on the fabric. Basically I'm calling PortChannel.get(session) to retrieve the existing port channels and VPCs, and then attaching the relevant object to a L2interface and then to an EPG.

Here's a snipped to reproduce the problem:

tenant = Tenant('IT-Dept')
app = AppProfile('IT-App01-AP', tenant)
epg = EPG('IT-App01-EPG', app)
pcs = PortChannel.get(session)
l2if = L2Interface("encap-0001", "vlan", 100)
l2if.attach(pcs[0]) # first element, for example, happens with any
epg.attach(l2if)
resp = session.push_to_apic(tenant.get_url(), data=tenant.get_json())

And this is the result:

Traceback (most recent call last):
  File "C:\code\deploy.py", line 933, in <module>
    main()
  File "C:\code\deploy.py", line 922, in main
    fabric.push_configuration()
  File "C:\code\deploy.py", line 867, in push_configuration
    resp = self.session.push_to_apic(tenant.get_url(), data=tenant.get_json())
  File "build\bdist.win32\egg\acitoolkit\acitoolkit.py", line 103, in get_json
  File "build\bdist.win32\egg\acitoolkit\acibaseobject.py", line 720, in get_json
  File "build\bdist.win32\egg\acitoolkit\acitoolkit.py", line 257, in get_json
  File "build\bdist.win32\egg\acitoolkit\acibaseobject.py", line 720, in get_json
  File "build\bdist.win32\egg\acitoolkit\acitoolkit.py", line 673, in get_json
  File "build\bdist.win32\egg\acitoolkit\acitoolkit.py", line 333, in _get_path
  File "build\bdist.win32\egg\acitoolkit\acitoolkit.py", line 2093, in _get_path
AssertionError

The assertion failure happens here:

    def _get_path(self):
        """Get the path of this interface used when communicating with
           the APIC object model.
        """
        assert len(self._interfaces)
        pod = self._interfaces[0].pod
        if self.is_vpc():
            (node1, node2) = self._get_nodes()
            path = 'topology/pod-%s/protpaths-%s-%s/pathep-[%s]' % (pod,
                                                                    node1,
                                                                    node2,
                                                                    self.name)
        else:
            node = self._interfaces[0].node
            path = 'topology/pod-%s/paths-%s/pathep-%s' % (pod,
                                                           node,
                                                           self.name)

        return path

Is there any way to fix this? It looks like PortChannel.get() didn't retrieve the actual interface objects that belong to the PC. Do I have to attach them manually? In that case, how do I figure out which ones I need to retrieve and attach?

Thanks a lot for your help. BR,

Luis.

Python3 Issue with 'setup.py develop'

I git pulled the source code from github, then did a develop install with 'python3 setup.py develop'
Now i get the following error when i try to import the acitoolkit:

python3
Python 3.4.3 (default, Feb 25 2015, 21:28:45)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>from acitoolkit.acitoolkit import *
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/richy/Documents/3_application/python/acitoolkit/acitoolkit/__init__.py", line 13, in <module>
    from __about__ import (
ImportError: No module named '__about__'

Bridge Domain Properties additions

Would like to see Bridge Domain Properties added the toolkit to enable acitoolkit configuration of L2 Firewall implementations.

Specifically:
L2 Unknown Unicast (Flood, Hardware Proxy)
Unknown Multicast Flood (Flood, Optimized Flood)
ARP Flooding (True, False)
Unicast Routing (True, False)
Associated L3 Outs: (Name)

pip install pygraphviz - failed

i have installed 'brew install graphviz" successfully:
$ brew list
graphviz libpng
The "pip install pygraphviz" failed since it could nt find Graphviz
---- portion of the errors shown in log -------------------
Running setup.py (path:/private/var/folders/6p/qk14s7m538d0l4n8w1k80vv80000gn/T/pip_build_maicutler/pygraphviz/setup.py) egg_info for package pygraphviz
/bin/sh: pkg-config: command not found
/bin/sh: pkg-config: command not found
Trying pkg-config
Trying dotneato-config
Failed to find dotneato-config

Your Graphviz installation could not be found.

1) You don't have Graphviz installed:
   Install Graphviz (http://graphviz.org)
    2) Your Graphviz package might incomplete.
   Install the binary development subpackage (e.g. libgraphviz-dev or similar.)
=========

Please add to the instruction that the environment variable needs to be set:
export PKG_CONFIG_PATH=/usr/local/Cellar/graphviz/2.38.0/
thanks

Attach VMM domain to EPG not working

Hi,
Couldn't manage to attach a VMM domain to an epg by doing: epg.attach(my_vmm_domain)
where my_vmm_domain is an existing VMM Domain object (VmmDomain).

acitoolkit-14.04.ovf needs to be changed for 5.5 compatibility

The acitoolkit-14.04.ova is not compatible for ovf deployment on ESXi 5.5. I was able to make a working OVF by manually editing and running fciv tool to generate a new SHA1 key.

OVF is pasted below. Let me know if you would like me to document the process.

Virtual disk information The list of logical networks The nat network A virtual machine acitoolkit-14.04 The kind of installed guest operating system Virtual hardware requirements vssd:ElementNameVirtual Hardware Family/vssd:ElementName vssd:InstanceID0/vssd:InstanceID vssd:VirtualSystemIdentifieracitoolkit-14.04/vssd:VirtualSystemIdentifier vssd:VirtualSystemTypevmx-07/vssd:VirtualSystemType rasd:AllocationUnitshertz \* 10^6/rasd:AllocationUnits rasd:DescriptionNumber of Virtual CPUs/rasd:Description rasd:ElementName2 virtual CPU(s)/rasd:ElementName rasd:InstanceID1/rasd:InstanceID rasd:ResourceType3/rasd:ResourceType rasd:VirtualQuantity2/rasd:VirtualQuantity rasd:AllocationUnitsbyte \* 2^20/rasd:AllocationUnits rasd:DescriptionMemory Size/rasd:Description rasd:ElementName2048MB of memory/rasd:ElementName rasd:InstanceID2/rasd:InstanceID rasd:ResourceType4/rasd:ResourceType rasd:VirtualQuantity2048/rasd:VirtualQuantity rasd:Address0/rasd:Address rasd:DescriptionSATA Controller/rasd:Description rasd:ElementNamesataController/rasd:ElementName rasd:InstanceID3/rasd:InstanceID rasd:ResourceSubTypelsilogic/rasd:ResourceSubType rasd:ResourceType6/rasd:ResourceType rasd:Address0/rasd:Address rasd:DescriptionUSB Controller (EHCI)/rasd:Description rasd:ElementNameusb/rasd:ElementName rasd:InstanceID4/rasd:InstanceID rasd:ResourceSubTypevmware.usb.ehci/rasd:ResourceSubType rasd:ResourceType23/rasd:ResourceType rasd:Address0/rasd:Address rasd:DescriptionSCSI Controller/rasd:Description rasd:ElementNamescsiController/rasd:ElementName rasd:InstanceID5/rasd:InstanceID rasd:ResourceSubTypelsilogic/rasd:ResourceSubType rasd:ResourceType6/rasd:ResourceType rasd:AddressOnParent0/rasd:AddressOnParent rasd:AutomaticAllocationfalse/rasd:AutomaticAllocation rasd:DescriptionFloppy Drive/rasd:Description rasd:ElementNamefloppy0/rasd:ElementName rasd:InstanceID6/rasd:InstanceID rasd:ResourceType14/rasd:ResourceType rasd:AutomaticAllocationtrue/rasd:AutomaticAllocation rasd:ElementNameserial0/rasd:ElementName rasd:InstanceID7/rasd:InstanceID rasd:ResourceType21/rasd:ResourceType rasd:AddressOnParent0/rasd:AddressOnParent rasd:ElementNamedisk0/rasd:ElementName rasd:HostResourceovf:/disk/vmdisk1/rasd:HostResource rasd:InstanceID8/rasd:InstanceID rasd:Parent5/rasd:Parent rasd:ResourceType17/rasd:ResourceType rasd:AddressOnParent2/rasd:AddressOnParent rasd:AutomaticAllocationtrue/rasd:AutomaticAllocation rasd:Connectionnat/rasd:Connection rasd:DescriptionE1000 ethernet adapter on "nat"/rasd:Description rasd:ElementNameethernet0/rasd:ElementName rasd:InstanceID9/rasd:InstanceID rasd:ResourceSubTypeE1000/rasd:ResourceSubType rasd:ResourceType10/rasd:ResourceType rasd:AutomaticAllocationfalse/rasd:AutomaticAllocation rasd:ElementNamesound/rasd:ElementName rasd:InstanceID10/rasd:InstanceID rasd:ResourceSubTypevmware.soundcard.ensoniq1371/rasd:ResourceSubType rasd:ResourceType1/rasd:ResourceType rasd:AutomaticAllocationfalse/rasd:AutomaticAllocation rasd:ElementNamevideo/rasd:ElementName rasd:InstanceID11/rasd:InstanceID rasd:ResourceType24/rasd:ResourceType rasd:AutomaticAllocationfalse/rasd:AutomaticAllocation rasd:ElementNamevmci/rasd:ElementName rasd:InstanceID12/rasd:InstanceID rasd:ResourceSubTypevmware.vmci/rasd:ResourceSubType rasd:ResourceType1/rasd:ResourceType

OSPF Interface configuration commands

The backend is ready so we should add the following commands to configure OSPF on the interface.
Configure OSPF Routing on a Interface
fabric(config-if)# [no] ip address /
fabric(config-if)# [no] ip router ospf area
fabric(config-if)# [no] ip ospf authentication message-digest
fabric(config-if)# [no] ip ospf message-digest-key md5

Input validation needed for naming properties

In the simple aci toolkit is possible to add a naming property that is greater than 64 characters long or contains invalid characters per the naming property input validator and the toolkit does not catch it until the property is sent to the APIC and an error is returned. This is problematic in several ways:

  • No generic exception is raised from the aci toolkit if the backend flags that an error occurred. It is being left up to the application to detect the error. It is more desirable to have the simple aci toolkit check for the requests response being not ok and raise an exception specific to the simple aci toolkit and expose the error from the backend in some way and allow the application to handle it.
  • Right now all of the examples in the sample directory do not handle these errors. It would be nice to show how they should be handled by applications that use the toolkit.
  • The CLI mode provided by the simple aci toolkit fails to configure things without informing the user of the failure. Then if the user tries to switchto the mode that they think they configured - because they were not told that it failed - the CLI mode script will fail ungracefully.

There may be other reasons but this seems sufficient for one issue report.

aci-show-interfaces-stats

for interface in sorted(interfaces, key=lamdba x: x.if_name):

Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/jgmitter/Downloads/ACIDemo/DemoFolder/acitoolkit/samples/aci-show-interface-stats.py
File "/Users/jgmitter/Downloads/ACIDemo/DemoFolder/acitoolkit/samples/aci-show-interface-stats.py", line 74
for interface in sorted(interfaces, key=lamdba x: x.if_name):
^
SyntaxError: invalid syntax

Process finished with exit code 1

Identical L2Interface instances cannot be applied to different Interface instances.

Hi Michael,

I'm running into an ugly exception while trying to assign a few static paths to an EPG. Here's a piece of code that works fine and a modified version that crashes.

        #############################################
        # This code runs fine
        #############################################       

        # Create the Tenant, App Profile, and EPG
        tenant =Tenant("dummy")
        app = AppProfile("myapp", tenant)
        epg = EPG("myepg", app)

        # Leaf-1, port1 goes with VLAN-2
        intf1 = Interface("eth", "1", "101", "1", "1")
        vlan_intf1 = L2Interface("vlan-2", "vlan", "2")
        vlan_intf1.attach(intf1)

        # Leaf-1, port2 goes with VLAN-3
        intf2 = Interface("eth", "1", "101", "1", "2")
        vlan_intf2 = L2Interface("vlan-3", "vlan", "3")
        vlan_intf2.attach(intf2)

        # Leaf-2, port20, goes with VLAN-4
        intf3 = Interface("eth", "1", "102", "1", "20")
        vlan_intf3 = L2Interface("vlan-4", "vlan", "4")
        vlan_intf3.attach(intf3)

        # Leaf-2, port 21, goes with VLAN-5
        intf4 = Interface("eth", "1", "102", "1", "21")
        vlan_intf4 = L2Interface("vlan-5", "vlan", "5")
        vlan_intf4.attach(intf4)

        # Now associate all VLAN ifaces with the EPG
        epg.attach(vlan_intf1)
        epg.attach(vlan_intf2)
        epg.attach(vlan_intf3)
        epg.attach(vlan_intf4)

        print("The code above runs just fine!")

This code raises an exception:

        #############################################
        # This code raises an exception: 
        #  ValueError: list.remove(x): x not in list
        #############################################     

        # Create the Tenant, App Profile, and EPG
        tenant =Tenant("dummy2")
        app = AppProfile("myapp2", tenant)
        epg = EPG("myepg2", app)

        # Leaf-1, port1 goes with VLAN-2
        intf1 = Interface("eth", "1", "101", "1", "1")
        vlan_intf1 = L2Interface("vlan-2", "vlan", "2")
        vlan_intf1.attach(intf1)

        # Leaf-1, port2 goes with VLAN-2
        intf2 = Interface("eth", "1", "101", "1", "2")
        vlan_intf2 = L2Interface("vlan-2", "vlan", "2")
        vlan_intf2.attach(intf2)

        # Leaf-2, port20, goes with VLAN-3
        intf3 = Interface("eth", "1", "102", "1", "20")
        vlan_intf3 = L2Interface("vlan-3", "vlan", "3")
        vlan_intf3.attach(intf3)

        # Leaf-2, port 21, goes with VLAN-3
        intf4 = Interface("eth", "1", "102", "1", "21")
        vlan_intf4 = L2Interface("vlan-3", "vlan", "3")
        vlan_intf4.attach(intf4)

        # Now associate all VLAN ifaces with the EPG
        epg.attach(vlan_intf1)
        epg.attach(vlan_intf2)
        epg.attach(vlan_intf3)
        epg.attach(vlan_intf4)

        print("This is never printed because an exception is raised!")

Exception raised looks like:

  File "C:\code\deploy.py", line 539, in _load_policies
    epg.attach(vlan_intf2)
  File "build\bdist.win32\egg\acitoolkit\acibaseobject.py", line 425, in attach
ValueError: list.remove(x): x not in list

The documentation states: "Multiple logical L2 network attachments can occur on the same Ethernet interface. When this occurs, the L2Interface instances must use different encapsulation identifiers and/or different encapsulation types"

The statement above does not apply to this case, since the same encap is being applied to different interfaces, not to the same one. If I recall correctly, there is a limitation in ACI that prevents having two different VLAN encaps assigned to the same EPG on the same leaf, or something along those lines, but this isn't even the case here.

My use case is: I have a few endpoints connected to the same leaf, that belong to the same EPG and use the same encap. On other leaves, there may be other endpoints of that EPG using either the same or different encap. This currently can't be implemented, or at least I haven't been able to successfully run the code. (Note that since this raises and Exception, I haven't even tried to push the config to an APIC).

I've been trying to figure out how the whole "is already attached?" check works, looking at BaseACIObject::attach(), is_attached(), _check_relation(), etc, all the way down to BaseRelation(), but I'm having trouble even understanding how the comparison "return check in self._relations" will ever return true.

Could you please have a look at it? Thanks a lot. Best regards,

Luis.

Contract submode

Configure a Contract (has an implicit deny any and default scope is context) fabric(config)# [no] contract fabric(config-contract)# [no] scope { app-profile | tenant | context | global }
fabric(config-contract)# [no] permit [from-port {port | protocol-port}] [to-port {port | protocol-port}] [fragments]
fabric(config-contract)# [no] permit tcp [from-port {port | protocol-port}] [to-port {port | protocol-port}][fragments][{+ | - } ]
fabric(config-contract)# [no] permit ethertype
fabric(config-contract)# [no] permit arp [request | response]

CLI testfile should return to normal CLI after all lines read

After all lines are read from the CLI test file and if the CLI has not exited, then we should return to reading lines from the user input. This will allow a user to write a test file that will get the CLI up to a certain point and then allow manual configuration.

Interface speed json

Should only set interface speed json when set by user. Default to none instead and don't dump json for it

CLI Issue

CLI crashes under (config-contract) context when a user types Enter with no other input. Tried this several times with same behaviour.

fabric# switchto Mazen
fabric-Mazen# conf t
fabric-Mazen(config)# contract Web_Contract
Executing create contract command
fabric-Mazen(config-contract)# _JUST TYPE ENTER HERE_
Traceback (most recent call last):
File "acitoolkitcli.py", line 1317, in
cmdLine.cmdloop()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/cmd.py", line 142, in cmdloop
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/cmd.py", line 218, in onecmd
File "acitoolkitcli.py", line 1176, in default
getattr(self, 'do_' + cmds[0])(arg)
File "acitoolkitcli.py", line 1199, in do_configure
self.configsubmode.cmdloop()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/cmd.py", line 142, in cmdloop
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/cmd.py", line 219, in onecmd
File "acitoolkitcli.py", line 802, in do_contract
self.contract_submode.cmdloop()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/cmd.py", line 141, in cmdloop
File "acitoolkitcli.py", line 1130, in precmd
self.sequence_number = int(cmd)
TypeError: int() argument must be a string or a number, not 'NoneType'

Nondeterministic behaviour for tenant.push_to_apic - "code 822, naming property ('fvAp.name') is not set."

I run into this issue under python3 with the current acitoolkit.

Minimal non-running script:

from acitoolkit.acitoolkit import *

session = Session('https://10.32.5.100', 'user', 'pw')
session.login()

tenant = [i for i in Tenant.get(session) if i.name == 'PoC'][0]

app = AppProfile.get(session, tenant)[0]

session.push_to_apic(tenant.get_url(), data=tenant.get_json())

The return can be '<Response [200]>' or '<Response [400]>'
In the case of 400 i get the following error:
'{"imdata":[{"error":{"attributes":{"code":"822","text":"naming property ('fvAp.name') is not set."}}}]}'

I think the problem arise from the json, if inside "fvTenant" "children" comes before "attribute", the push fails. With postman i was able to reproduce this behaviour
Works:

'{"fvTenant": {"attributes": {"name": "PoC"}, "children": [{"fvAp": {"attributes": {"name": "App_1"}, "children": []}}]}}'

Doesn't Work:

'{"fvTenant": {"children": [{"fvAp": {"children": [], "attributes": {"name": "App_1"}}}], "attributes": {"name": "PoC"}}}'

acilint not running

I am wanting to play around with acilint but I can't get it working. I've tried in both my Linux and Mac OS environments. I get the following output:

$ python acilint.py
Getting configuration from APIC....
Traceback (most recent call last):
File "acilint.py", line 334, in
checker = Checker(session)
File "acilint.py", line 29, in init
self.tenants = Tenant.get_deep(session)
File "build/bdist.macosx-10.5-x86_64/egg/acitoolkit/acitoolkit.py", line 120, in get_deep
File "build/bdist.macosx-10.5-x86_64/egg/acitoolkit/acibaseobject.py", line 279, in get_deep
File "build/bdist.macosx-10.5-x86_64/egg/acitoolkit/acibaseobject.py", line 279, in get_deep
File "build/bdist.macosx-10.5-x86_64/egg/acitoolkit/acibaseobject.py", line 271, in get_deep
AttributeError: type object 'Subnet' has no attribute '_get_toolkit_to_apic_classmap'

I have verified my credentials are valid and have tried variations of credential inputs (cli, env variable, credentials.py).

My toolkit was last updated today.

$ git pull dc master
From https://github.com/datacenter/acitoolkit

  • branch master -> FETCH_HEAD
    Updating 227a7cc..a8afccc
    Fast-forward
    acitoolkit/acitoolkit.py | 207 +++++++++++++++++++++++++++++++++++++------------------------------------
    acitoolkit/acitoolkitlib.py | 71 ++++++++++++++++++-------
    applications/cli/acitoolkitcli.py | 12 ++++-
    tests/aciphysobject_test.py | 45 +++++++++++-----
    tests/acitoolkit_test.py | 250 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
    tests/acitoolkitlib_test.py | 63 +++++++++++++++++++++++
    6 files changed, 496 insertions(+), 152 deletions(-)
    create mode 100644 tests/acitoolkitlib_test.py

My fabric is on 1.0.3f. Any ideas before I trip over my feet looking at the code?

Other potentially useful information:

$ python -V
Python 2.7.6 :: Anaconda 1.9.2 (x86_64)
$ pip list | grep aci
acicobra (1.0-3f)
acicobrasdk (1.0-2m)
acimodel (1.0-3f)
acitoolkit (0.1)

escaping complex passwords

First contribution here so please be kind - I am using two controllers, one in San Diego and one in New York City. My SD controller has a "normal" admin password, whereas my NYC controller has a password with a special character (an exclamation) - if I connect using say, the snapback tool, I can create a snap fine in SD. However when I try to create a snap in NYC, it bombs. Here's an example on the command line:
NYC:
KEGARREA-M-G0EU:lint kegarrea$ python acilint.py -l admin -p Ins!3579 -u https://10.87.34.16
-bash: !3579: event not found

SD:
KEGARREA-M-G0EU:lint kegarrea$ python acilint.py -l admin -p Cisco321 -u https://10.95.33.232
Getting configuration from APIC....
Processing configuration....
Critical 001: EPG 'default' in tenant 'infra' app 'access' is not assigned security clearance
etc etc

Hopefully this is a bug and not user error.

ACI toolkit versioning and tags

Hi,

I was wondering if it would be possible to start updating the version of this package to make identifying old installations possible. It would also be nice if releases were tagged so that a user could install a particular version of the package in case future improvements are not backwards compatible.

Python Version Scheme

Thanks for your consideration.

applying immediacy "immediate" to EPG with VMM domain

When doing: epg.set_deployment_immediacy('immediate')
the change doesn't seem to be applied to any configured VMM domain present as part of the EPG.
For VMM domains, the deployment policy still appears as "on-demand"

Working with portchannels.

I can´t find any good samples on how to work with vpc/pc

Just the normal stuff.

Static binding to epg
creating
etc.

Running acitoolkit on Ubuntu VM, but error when login APIC.

I tested the acitoolkitcli.py, can not run ok. I got the error message

File "./acitoolkitcli.py", line 1293, in
apic.login()
File "build/bdist.linux-x86_64/egg/acitoolkit/acisession.py", line 232, in login

The OS is:Linux aci-virtual-machine 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

aciphysobject.py dependency failure

aciphysobject.py has a dependency on acicounters as per the merge committed 6 days ago, but acicounters is not in the acitoolkit library.

Latent config after live tests

base_test_cleanup needs to be modified to remove configuration created in test_assign_epg_to_port_channel.

The following object remains.

uni/fabric/protpol/expgep-vpc105

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.