Skip to content

Conversation

vvaradhan
Copy link

This PR enables the following feature for Cisco ACI:

Allows Crowbar configuration for enabling multiple VMM domain features for ACI. It was painful for the customer to change in the config file manually and avoid the chef-client from overriding the config. Both KVM and VMWare based VMM domains can be configured using this feature.

Each [apic_vmdom:<vmm_domain_name>] corresponds to a VMM configuration. In these sections, [apic] configurations can be overridden for more granular infrastructure sharing.
What is configured in the [apic] sharing will be the default used in case a more specific configuration is missing for the domain.

For example:

[apic_vmdom:soc_kvm_domain]
vlan_ranges=1000:2000

[apic_vmdom:soc_vmware_domain]
apic_vmm_type=vmware
enable_optimized_dhcp=false
enable_optimized_metadata=false

In case of a VMWare based VMM domain, the respective VMM domain MUST be created in APIC prior to configuring in neutron. For KVM, neutron will create the VMM domain if not already created.

Note: The intended target of this PR is Cloud 7 and is updated here due to the standard process being followed for all PRs (master-update followed by cloud 7 backport). The tests were only done for Cloud 7 based deployments.

@rsalevsky
Copy link
Member

Needs rebase

@vuntz
Copy link
Member

vuntz commented Mar 29, 2018

@mmnelemane have you checked this out?

This commit provides changes in plugin packages and config files
needed for integration of SOC with ACI 4.1 and higher versions.
ACI 4.1 uses a slightly different set of plugin packages and configs
for integration with OpenStack. This includes:
 - python-gbpclient renamed to python-group-based-policy-client
 - ovs-bridge-name in opflex-agent-ovs.conf removed
 - addition of int-bridge-name and access-bridge-name in opflex-agent-ovs.conf
 - Renaming of agent-ovs to opflex-agent
For uniformity, the template for opflex-agent-ovs.conf is now renamed
from 10-opflex-agent-ovs.conf.erb to opflex-agent-ovs.conf.erb
- The neutron template schema and json templates are updated to provide
integration_bridge and access_bridge details with default values. The
corresponding migration scripts are also updated.
@mmnelemane
Copy link
Contributor

Rebased and multiple commits squashed to single commit with updated commit format and details.

@mmnelemane mmnelemane changed the title neutron[Cisco ACI]: Allow multiple VMM domain configurations be managed from Crowbar [neutron][Cisco ACI]: Multiple VMM domain support (SOC - 10471) Sep 5, 2019
Varadhan Veerapuram and others added 3 commits September 6, 2019 10:50
A Single ACI fabric can support multiple VMM domains. Each VMM domain
can be governed by a different controller (Eg: VMWare vCenter or
OpenStack or MicroSoft SCVMM). Several production data centers tend
to use multiple VMM domains and expect to be able to monitor and
control network policies from a single ACI fabric. Integration of
OpenStack with such a setup requires crowbar to provide parameters
specific to each VMM domain. This commit adds the additional
parameters and logic to validate and send these to the correct
config location. The changes now allow to provide "Vmware" or
"OpenStack" as the VMM type. Multiple entries of either types
are possible.
@@ -0,0 +1,15 @@
def upgrade(tattr, tdep, attr, dep)
unless attr["apic"].key?("apic_vmms")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Style/IfUnlessModifier: Favor modifier unless usage when having a single-line body. Another good alternative is the usage of control flow &&/||. (https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier)

# distributed dhcp and metadata cannot work since these
# functions conflict with vcenter functionality.
if acivmms.find { |vmm| vmm[:vmm_type].downcase == "vmware"}
apic_optimized_dhcp = false
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Layout/TrailingWhitespace: Trailing whitespace detected. (https://github.com/bbatsov/ruby-style-guide#no-trailing-whitespace)

# If using VMWare vcenter as one of the compute hosts.
# distributed dhcp and metadata cannot work since these
# functions conflict with vcenter functionality.
if acivmms.find { |vmm| vmm[:vmm_type].downcase == "vmware"}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Performance/Casecmp: Use casecmp instead of downcase ==. (https://github.com/JuanitoFatas/fast-ruby#stringcasecmp-vs-stringdowncase---code)
Layout/SpaceInsideBlockBraces: Space missing inside }.

@mmnelemane
Copy link
Contributor

duplicate of #2227 which is based on the latest fixes and changes.

@mmnelemane mmnelemane closed this Sep 6, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

4 participants