diff --git a/.gitignore b/.gitignore deleted file mode 100644 index da08536..0000000 --- a/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -*.rpm -*.deb -.build/ -.cache/ -.project -.pydevproject -doc/build -tmp/ -deployment_scripts/install_quagga.sh diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index a3c5540..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,22 +0,0 @@ -## 0.8.0 - - - Support MOS 8.0. - - Move ODL installation and configuration - to main phase of deployment. - - L3 traffic managed by ODL possible when vxlan - tunneling is used. - - Include snapshot of OpenDaylight Beryllium, - stable version not available at this moment. - - Get rid of hardcoded configurations related to specific ODL versions. - Now plugin is more elastic and should support a broader - number of ODL versions. - - odl_network_scheme function overrided standard network scheme - so custom network templates are not required. - - ODL is no longer patched to use br-floating bridge. - - -## 0.7.0 - - - Support for MOS 7.0 - - Include OpenDaylight Lithium SR2 - - Introduce separate role for ODL controller diff --git a/LICENSE b/LICENSE deleted file mode 100644 index d0381d6..0000000 --- a/LICENSE +++ /dev/null @@ -1,176 +0,0 @@ -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS diff --git a/README.md b/README.md deleted file mode 100644 index 5e56c13..0000000 --- a/README.md +++ /dev/null @@ -1,133 +0,0 @@ -OpenDaylight Plugin for Fuel -================================ - -OpenDaylight plugin ------------------------ - -Overview --------- - -This plugin will install OpenDaylight controller and set it as manager for OVS using ovsdb plugin. - -* [OpenDaylight controller](https://wiki.opendaylight.org/view/OpenDaylight_Controller:Main) is a SDN controller. -* [OVSDB plugin](https://wiki.opendaylight.org/view/OVSDB_Integration:Main) implement the Open vSwitch Database management protocol. - -Requirements ------------- - -| Requirement | Version/Comment | -|----------------------------------|-----------------| -| Mirantis OpenStack compatibility | 10.0 | - -Limitations ------------ - -* HA for ODL controller is not implemented yet. - -Installation Guide -================== - -OpenDaylight plugin installation ----------------------------------------- - -1. Clone the fuel-plugin-opendaylight repo from github: - - git clone https://github.com/openstack/fuel-plugin-opendaylight - -2. Install the Fuel Plugin Builder: - - pip install fuel-plugin-builder - -3. Build OpenDaylight Fuel plugin: - - fpb --build fuel-plugin-opendaylight/ - -4. The *opendaylight-[x.x.x].rpm* plugin package will be created in the plugin folder. - -5. Move this file to the Fuel Master node with secure copy (scp): - - scp opendaylight-[x.x.x].rpm root@:/tmp - -6. While logged in Fuel Master install the OpenDaylight plugin: - - fuel plugins --install opendaylight-[x.x.x].rpm - -7. Check if the plugin was installed successfully: - - fuel plugins - - id | name | version | package_version - ---|--------------|---------|---------------- - 1 | opendaylight | 0.5.2 | 2.0.0 - -8. Plugin is ready to use and can be enabled on the Settings tab of the Fuel web UI. - - -User Guide -========== - -OpenDaylight plugin configuration ---------------------------------------------- - -1. Create a new environment with the Fuel UI wizard. -2. Click on the Settings tab of the Fuel web UI. -3. Select "OpenDaylight plugin" section in "Other" tab. -4. Tick the checkbox and click "Save Settings" button. -5. Assign role OPENDAYLIGHT to one of the node. - - -Build options -------------- - -It is possible to modify process of building plugin by setting environment variables. Look into [pre_build_hook file](pre_build_hook) for more details. -For example include 2 versions of opendaylight controller in plugin: - - ODL_VERSIONS="5.1.0.1 5.0.0.1" fpb --build fuel-plugin-opendaylight/ - - -Testing -------- - -OpenDaylight files are stored on node with 'OpenDaylight' role assigned inside */opt/opendaylight* directory. - -To log in to OpenDayligt shell run */opt/opendaylight/bin/client -u karaf* - -Known issues ------------- - -* VM live migration not supported by ODL ovsdb -* ODL ignore MTU size from Neutron and create tap devices for VMs with MTU 1500. Things like Jumbo frames will not work on VMs side. - -Development -=========== - -Plugin is developed as a part of [FUEL@OPNFV project](https://wiki.opnfv.org/display/fuel/Fuel+Opnfv). - -If you have questions/suggestions you can find us on #opnfv-fuel freenode IRC channel. - -If you prefer email The *OpenStack Development Mailing List* `openstack-dev@lists.openstack.org` -or *OPNFV Technical Discussion* `opnfv-tech-discuss@lists.opnfv.org` can be used. -Subject should be prefixed by `[fuel][plugins][odl]`. - -Reporting Bugs --------------- - -Bugs should be filled on the [Launchpad fuel-plugin-opendaylight project]( -https://bugs.launchpad.net/fuel-plugin-opendaylight/). - - -Contributing ------------- - -If you would like to contribute to the development of this Fuel plugin you must -follow the [OpenStack development workflow]( -http://docs.openstack.org/infra/manual/developers.html#development-workflow). - -Patch reviews take place on the [OpenStack gerrit]( -https://review.openstack.org/#/q/status:open+project:openstack/fuel-plugin-opendaylight,n,z) -system. - -Contributors ------------- - -* https://github.com/openstack/fuel-plugin-opendaylight/graphs/contributors diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..86e34d6 --- /dev/null +++ b/README.rst @@ -0,0 +1,10 @@ +This project is no longer maintained. + +The contents of this repository are still available in the Git +source code management system. To see the contents of this +repository before it reached its end of life, please check out the +previous commit with "git checkout HEAD^1". + +For any further questions, please email +openstack-discuss@lists.openstack.org or join #openstack-dev on +Freenode. diff --git a/components.yaml b/components.yaml deleted file mode 100644 index 9ef5c2f..0000000 --- a/components.yaml +++ /dev/null @@ -1,18 +0,0 @@ -- name: 'network:neutron:opendaylight:tun' - label: 'OpenDaylight with tunneling segmentation' - description: 'Use Neutron with networking-odl driver' - bind: !!pairs - - "cluster:net_provider": "neutron" - - "cluster:net_segment_type": "tun" - compatible: - - name: 'hypervisor:kvm' - - name: 'hypervisor:qemu' -- name: 'network:neutron:opendaylight:vlan' - label: 'OpenDaylight with vlan segmentation' - description: 'Use Neutron with networking-odl driver' - bind: !!pairs - - "cluster:net_provider": "neutron" - - "cluster:net_segment_type": "vlan" - compatible: - - name: 'hypervisor:kvm' - - name: 'hypervisor:qemu' diff --git a/deployment_scripts/puppet/manifests/hiera-override.pp b/deployment_scripts/puppet/manifests/hiera-override.pp deleted file mode 100644 index bb4a7c5..0000000 --- a/deployment_scripts/puppet/manifests/hiera-override.pp +++ /dev/null @@ -1,2 +0,0 @@ -notice('MODULAR: hiera-override') -class { '::opendaylight::hiera_override': } diff --git a/deployment_scripts/puppet/manifests/odl-common_config.pp b/deployment_scripts/puppet/manifests/odl-common_config.pp deleted file mode 100644 index dab6241..0000000 --- a/deployment_scripts/puppet/manifests/odl-common_config.pp +++ /dev/null @@ -1,196 +0,0 @@ -notice('MODULAR: odl-common_config.pp') - -include opendaylight -$use_neutron = hiera('use_neutron', false) -$odl = $opendaylight::odl_settings -$management_vip = hiera('management_vip') -$ovsdb_managers = odl_ovsdb_managers($opendaylight::odl_mgmt_ips) - - -package {'python-networking-odl': - ensure => installed, -} - -exec { 'ovs-set-manager': - command => "ovs-vsctl set-manager ${ovsdb_managers}", - path => '/usr/bin' -} - -if $odl['enable_l3_odl'] or roles_include(['primary-controller', 'controller']) { - $patch_jacks_names = get_pair_of_jack_names(['br-ex', 'br-ex-lnx']) - $ext_interface = $patch_jacks_names[0] -} - -$openstack_network_hash = hiera_hash('openstack_network', { }) -$neutron_config = hiera_hash('neutron_config') -$neutron_advanced_config = hiera_hash('neutron_advanced_configuration', { }) -$enable_qos = pick($neutron_advanced_config['neutron_qos'], false) - -$core_plugin = 'neutron.plugins.ml2.plugin.Ml2Plugin' - -if $odl['odl_v2'] { - $odl_plugin = 'odl-router_v2' -} else { - $odl_plugin = 'odl-router' -} - -if $odl['enable_l3_odl'] { - $default_service_plugins = [ - $odl_plugin, - 'neutron.services.metering.metering_plugin.MeteringPlugin', - ] -} else { - $default_service_plugins = [ - 'neutron.services.l3_router.l3_router_plugin.L3RouterPlugin', - 'neutron.services.metering.metering_plugin.MeteringPlugin', - ] -} - -if $enable_qos { - $service_plugins = concat($default_service_plugins, ['qos']) -} else { - $service_plugins = $default_service_plugins -} - -$neutron_config_l3 = pick($neutron_config['l3'], {}) -$dhcp_lease_duration = pick($neutron_config_l3['dhcp_lease_duration'], '600') - -$rabbit_hash = hiera_hash('rabbit', {}) -$ceilometer_hash = hiera_hash('ceilometer', {}) -$network_scheme = hiera_hash('network_scheme', {}) - -$verbose = pick($openstack_network_hash['verbose'], hiera('verbose', true)) -$debug = pick($openstack_network_hash['debug'], hiera('debug', true)) -# TODO(aschultz): LP#1499620 - neutron in UCA liberty fails to start with -# syslog enabled. -$use_syslog = $::os_package_type ? { - 'ubuntu' => false, - default => hiera('use_syslog', true) -} -$use_stderr = hiera('use_stderr', false) -$log_facility = hiera('syslog_log_facility_neutron', 'LOG_LOCAL4') - -prepare_network_config($network_scheme) -$bind_host = get_network_role_property('neutron/api', 'ipaddr') - -$base_mac = $neutron_config['L2']['base_mac'] -$amqp_hosts = split(hiera('amqp_hosts', ''), ',') -$amqp_user = $rabbit_hash['user'] -$amqp_password = $rabbit_hash['password'] - -$kombu_compression = hiera('kombu_compression', $::os_service_default) - -$segmentation_type = dig44($neutron_config, ['L2', 'segmentation_type']) - -$nets = $neutron_config['predefined_networks'] - -if $segmentation_type == 'vlan' { - $net_role_property = 'neutron/private' - - if $ext_interface { - exec { 'ovs-set-provider-mapping': - command => "ovs-vsctl set Open_vSwitch $(ovs-vsctl show | head -n 1) other_config:provider_mappings=br-ex:${ext_interface},physnet2:br-aux", - path => '/usr/bin', - require => Exec['ovs-set-manager'], - } - } else { - exec { 'ovs-set-provider-mapping': - command => "ovs-vsctl set Open_vSwitch $(ovs-vsctl show | head -n 1) other_config:provider_mappings=physnet2:br-aux", - path => '/usr/bin', - require => Exec['ovs-set-manager'], - } - } -} else { - $net_role_property = 'neutron/mesh' - $tunneling_ip = get_network_role_property($net_role_property, 'ipaddr') - - if $odl['enable_bgpvpn'] { - exec { 'ovs-set-provider-mapping': - command => "ovs-vsctl set Open_vSwitch $(ovs-vsctl show | head -n 1) other_config:provider_mappings=physnet1:br-floating", - path => '/usr/bin', - require => Exec['ovs-set-manager'], - } - } else { - if $ext_interface { - exec { 'ovs-set-provider-mapping': - command => "ovs-vsctl set Open_vSwitch $(ovs-vsctl show | head -n 1) other_config:provider_mappings=br-ex:${ext_interface}", - path => '/usr/bin', - require => Exec['ovs-set-manager'], - } - } - - } - exec { 'ovs-set-tunnel-endpoint': - command => "ovs-vsctl set Open_vSwitch $(ovs-vsctl show | head -n 1) other_config:local_ip=${tunneling_ip}", - path => '/usr/bin', - require => Exec['ovs-set-manager'], - } -} -$iface = get_network_role_property($net_role_property, 'phys_dev') - -if $iface { - $physical_net_mtu = pick(get_transformation_property('mtu', $iface[0]), '1500') -} else { - $physical_net_mtu = '1500' -} - - -$default_log_levels = hiera_hash('default_log_levels') - -# manually add line to neutron_sudoers in case of UCA packages -# because UCA doesn't have such line -if $::os_package_type == 'ubuntu' { - file_line { 'root_helper_daemon': - line => 'neutron ALL = (root) NOPASSWD: /usr/bin/neutron-rootwrap-daemon /etc/neutron/rootwrap.conf', - path => '/etc/sudoers.d/neutron_sudoers', - match => '^neutron ALL = (root) NOPASSWD: /usr/bin/neutron-rootwrap-daemon', - } - Package['neutron'] -> File_line[ 'root_helper_daemon'] -> Neutron_config<||> -} - -class { '::neutron' : - lock_path => '/var/lib/neutron/lock', - bind_host => $bind_host, - base_mac => $base_mac, - core_plugin => $core_plugin, - service_plugins => $service_plugins, - allow_overlapping_ips => true, - mac_generation_retries => '32', - dhcp_lease_duration => $dhcp_lease_duration, - dhcp_agents_per_network => '2', - report_interval => $neutron_config['neutron_report_interval'], - rabbit_user => $amqp_user, - rabbit_hosts => $amqp_hosts, - rabbit_password => $amqp_password, - rabbit_heartbeat_timeout_threshold => 0, - kombu_compression => $kombu_compression, - global_physnet_mtu => $physical_net_mtu, - advertise_mtu => true, - notification_driver => $ceilometer_hash['notification_driver'], - manage_logging => false, - root_helper_daemon => 'sudo neutron-rootwrap-daemon /etc/neutron/rootwrap.conf' -} - -class { '::neutron::logging': - debug => $debug, - use_syslog => $use_syslog, - use_stderr => $use_stderr, - syslog_log_facility => $log_facility, - default_log_levels => $default_log_levels, -} - - -### SYSCTL ### - -# All nodes with network functions should have net forwarding. -# Its a requirement for network namespaces to function. -sysctl::value { 'net.ipv4.ip_forward': value => '1' } - -# All nodes with network functions should have these thresholds -# to avoid "Neighbour table overflow" problem -sysctl::value { 'net.ipv4.neigh.default.gc_thresh1': value => '4096' } -sysctl::value { 'net.ipv4.neigh.default.gc_thresh2': value => '8192' } -sysctl::value { 'net.ipv4.neigh.default.gc_thresh3': value => '16384' } - -Sysctl::Value <| |> -> Package['python-networking-odl'] -> Nova_config <||> -Sysctl::Value <| |> -> Package['python-networking-odl'] -> Neutron_config <||> diff --git a/deployment_scripts/puppet/manifests/odl-dashboard.pp b/deployment_scripts/puppet/manifests/odl-dashboard.pp deleted file mode 100644 index 5fe7a02..0000000 --- a/deployment_scripts/puppet/manifests/odl-dashboard.pp +++ /dev/null @@ -1,28 +0,0 @@ -notice('MODULAR: odl-dashboard.pp') - -include opendaylight - -$cluster_id = hiera('deployment_id') -$master_ip = hiera('master_ip') -$network_metadata = hiera_hash('network_metadata', {}) -$os_public_vip = $network_metadata['vips']['public']['ipaddr'] -$odl = $opendaylight::odl_settings -$port = $opendaylight::jetty_port -$user = $odl['metadata']['default_credentials']['user'] -$password = $odl['metadata']['default_credentials']['password'] - -$dashboard_name = 'OpenDaylight Dashboard' -$dashboard_desc = "OpenDaylight DLUX user interface. Default credentials are ${user}/${password}" -$dashboard_link = "http://${os_public_vip}:${port}/index.html" - -$json_hash = { title => $dashboard_name, - description => $dashboard_desc, - url => $dashboard_link, } - -$json_message = inline_template('<%= require "json"; JSON.dump(@json_hash) %>') - -exec { 'create_dashboard_link': - command => "/usr/bin/curl -H 'Content-Type: application/json' -X POST \ --d '${json_message}' \ -http://${master_ip}:8000/api/clusters/${cluster_id}/plugin_links", -} diff --git a/deployment_scripts/puppet/manifests/odl-install.pp b/deployment_scripts/puppet/manifests/odl-install.pp deleted file mode 100644 index 44be6d3..0000000 --- a/deployment_scripts/puppet/manifests/odl-install.pp +++ /dev/null @@ -1,12 +0,0 @@ -notice('MODULAR: odl-install.pp') -include opendaylight -include firewall - -class { 'opendaylight::install': - rest_port => $opendaylight::rest_api_port, - bind_address => $opendaylight::node_internal_address -} - -class {'opendaylight::quagga': - before => Service['opendaylight'] -} diff --git a/deployment_scripts/puppet/manifests/odl-ml2-configuration.pp b/deployment_scripts/puppet/manifests/odl-ml2-configuration.pp deleted file mode 100644 index a77e81f..0000000 --- a/deployment_scripts/puppet/manifests/odl-ml2-configuration.pp +++ /dev/null @@ -1,94 +0,0 @@ -notice('MODULAR: odl-ml2.pp') - -class neutron {} -class { 'neutron' :} - -$override_configuration = hiera_hash(configuration, {}) -$override_configuration_options = { create => true } - -override_resources { 'odl-ml2-override': - configuration => $override_configuration, - options => $override_configuration_options, -} - - -include ::neutron::params - -$node_name = hiera('node_name') -$neutron_primary_controller_roles = hiera('neutron_primary_controller_roles', ['primary-controller']) -$neutron_compute_roles = hiera('neutron_compute_nodes', ['compute']) -$primary_controller = roles_include($neutron_primary_controller_roles) -$compute = roles_include($neutron_compute_roles) - -$neutron_config = hiera_hash('neutron_config') -$neutron_server_enable = pick($neutron_config['neutron_server_enable'], true) -$neutron_nodes = hiera_hash('neutron_nodes') - -$dpdk_config = hiera_hash('dpdk', {}) -$enable_dpdk = pick($dpdk_config['enabled'], false) - -$management_vip = hiera('management_vip') -$service_endpoint = hiera('service_endpoint', $management_vip) -$ssl_hash = hiera_hash('use_ssl', {}) -$internal_auth_protocol = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'protocol', 'http') -$internal_auth_address = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'hostname', [$service_endpoint]) - -$auth_api_version = 'v2.0' -$identity_uri = "${internal_auth_protocol}://${internal_auth_address}:5000" -$auth_url = "${identity_uri}/${auth_api_version}" -$auth_password = $neutron_config['keystone']['admin_password'] -$auth_user = pick($neutron_config['keystone']['admin_user'], 'neutron') -$auth_tenant = pick($neutron_config['keystone']['admin_tenant'], 'services') -$auth_region = hiera('region', 'RegionOne') -$auth_endpoint_type = 'internalURL' - -# Synchronize database after plugin was configured -if $primary_controller { - include ::neutron::db::sync - - Override_resources['odl-ml2-override'] -> Exec['neutron-db-sync'] - - notify{"Trigger neutron-db-sync": } ~> Exec['neutron-db-sync'] -} - -if $node_name in keys($neutron_nodes) { - if $neutron_server_enable { - $service_ensure = 'running' - } else { - $service_ensure = 'stopped' - } - - service { 'neutron-server': - name => $::neutron::params::server_service, - enable => $neutron_server_enable, - ensure => $service_ensure, - hasstatus => true, - hasrestart => true, - tag => 'neutron-service', - } - - exec { 'waiting-for-neutron-api': - environment => [ - "OS_TENANT_NAME=${auth_tenant}", - "OS_USERNAME=${auth_user}", - "OS_PASSWORD=${auth_password}", - "OS_AUTH_URL=${auth_url}", - "OS_REGION_NAME=${auth_region}", - "OS_ENDPOINT_TYPE=${auth_endpoint_type}", - ], - path => '/usr/sbin:/usr/bin:/sbin:/bin', - tries => '30', - try_sleep => '4', - command => 'neutron net-list --http-timeout=4 2>&1 > /dev/null', - provider => 'shell', - subscribe => Service['neutron-server'], - refreshonly => true, - } - -} - -# Stub for upstream neutron manifests -package { 'neutron': - name => 'binutils', - ensure => 'installed', -} diff --git a/deployment_scripts/puppet/manifests/odl-service.pp b/deployment_scripts/puppet/manifests/odl-service.pp deleted file mode 100644 index 52a14a4..0000000 --- a/deployment_scripts/puppet/manifests/odl-service.pp +++ /dev/null @@ -1,2 +0,0 @@ -notice('MODULAR: odl-service.pp') -class { 'opendaylight::service':} diff --git a/deployment_scripts/puppet/manifests/odl-sfc.pp b/deployment_scripts/puppet/manifests/odl-sfc.pp deleted file mode 100644 index d5fd5d4..0000000 --- a/deployment_scripts/puppet/manifests/odl-sfc.pp +++ /dev/null @@ -1,2 +0,0 @@ -notice('MODULAR: odl-sfc.pp') -class { 'opendaylight::sfc':} diff --git a/deployment_scripts/puppet/manifests/odl-vxgpe.pp b/deployment_scripts/puppet/manifests/odl-vxgpe.pp deleted file mode 100644 index e2fa31a..0000000 --- a/deployment_scripts/puppet/manifests/odl-vxgpe.pp +++ /dev/null @@ -1,4 +0,0 @@ -notice('MODULAR: odl-vxgpe.pp') -include firewall - -class { 'opendaylight::vxgpe': } \ No newline at end of file diff --git a/deployment_scripts/puppet/manifests/remove-odl-override.pp b/deployment_scripts/puppet/manifests/remove-odl-override.pp deleted file mode 100644 index fb3676b..0000000 --- a/deployment_scripts/puppet/manifests/remove-odl-override.pp +++ /dev/null @@ -1,5 +0,0 @@ -notice('MODULAR: remove-odl-override.pp') - -file { '/etc/hiera/plugins/opendaylight.yaml': - ensure => absent, -} diff --git a/deployment_scripts/puppet/modules/opendaylight/lib/puppet/parser/functions/odl_hiera_overrides.rb b/deployment_scripts/puppet/modules/opendaylight/lib/puppet/parser/functions/odl_hiera_overrides.rb deleted file mode 100644 index e69a9b5..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/lib/puppet/parser/functions/odl_hiera_overrides.rb +++ /dev/null @@ -1,86 +0,0 @@ -require 'yaml' - -module Puppet::Parser::Functions - newfunction(:odl_hiera_overrides, :type => :rvalue, :arity => 6) do |args| - - odl, neutron_config, neutron_advanced_configuration, network_scheme, mgmt_vip, standalone_mode = args - - hiera_overrides = {} - configuration = {} - - mechanism_driver = odl['odl_v2'] ? 'opendaylight_v2' : 'opendaylight' - # The list of drivers that can be enabled can be found here - # https://github.com/openstack/networking-odl/blob/master/devstack/settings#L79 - # or https://github.com/openstack/networking-odl/commit/9aab23a3c3fd8aa7ade1e8edc150dd24ee3f5948 - # In Newton by default dns and port_security are enabled, but networking-odl doesn't support dns, - # and because of that floating IPs cannot be assigned. So we disable dns here. - extension_drivers = 'port_security' - - ml2_plugin = { - 'neutron_plugin_ml2' => { - 'ml2/mechanism_drivers' => {'value' => mechanism_driver}, - 'ml2/extension_drivers' => {'value' => extension_drivers}, - 'ml2_odl/password' => {'value' => 'admin'}, - 'ml2_odl/username' => {'value' => 'admin'}, - 'ml2_odl/url' => {'value' => "http://#{mgmt_vip}:#{odl['rest_api_port']}/controller/nb/v2/neutron"} - } - } - - # When L3 forward is disabled in ODL set external_network_bridge option - # to use neutron L3 agent to create qg port on selected bridge - # Without this floating IPs doesn't work. - # This option will be no longer used in Mitaka release. - # Must be changed before that! - l3_agent = { - 'neutron_l3_agent_config' => { - 'DEFAULT/external_network_bridge' => {'value' => 'br-ex'} - } - } - - # When L3 forward is enabled in odl there is no neutron l3 agent - # which normally proxy request to metadata agent. Dhcp agent can - # takeover this task - # Use vsctl ovsdb interface instead of native which is default - # since Newton release. Using older interface prevents neutron - # from switching ovs to listen in passive mode (ptcp:6640) - # https://bugs.launchpad.net/neutron/+bug/1614766 - dhcp_agent = { - 'neutron_dhcp_agent_config' => { - 'DEFAULT/force_metadata' => {'value' => true} - } - } - - neutron_ovs_config = { - 'neutron_config' => { - 'OVS/ovsdb_interface' => {'value' => 'vsctl'} - } - } - - unless standalone_mode - configuration.merge! ml2_plugin - configuration.merge! l3_agent - configuration.merge! dhcp_agent - configuration.merge! neutron_ovs_config - end - - hiera_overrides['configuration'] = configuration - hiera_overrides['configuration_options'] = { 'create' => false } - - # override neutron_config/quantum_settings - neutron_config['L2']['mechanism_drivers'] = 'opendaylight' - neutron_config['L2']['phys_nets']['physnet1']['bridge'] = odl['enable_bgpvpn'] ? 'br-ex' : 'br-int' - - hiera_overrides['neutron_config'] = neutron_config - hiera_overrides['quantum_settings'] = neutron_config - - # override neutron_advanced_configuration - neutron_advanced_configuration['neutron_dvr'] = false - neutron_advanced_configuration['neutron_l2_pop'] = false - neutron_advanced_configuration['l2_agent_ha'] = false - hiera_overrides['neutron_advanced_configuration'] = neutron_advanced_configuration - - hiera_overrides['network_scheme'] = network_scheme - - return hiera_overrides.to_yaml - end -end diff --git a/deployment_scripts/puppet/modules/opendaylight/lib/puppet/parser/functions/odl_karaf_features.rb b/deployment_scripts/puppet/modules/opendaylight/lib/puppet/parser/functions/odl_karaf_features.rb deleted file mode 100644 index 0b14d65..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/lib/puppet/parser/functions/odl_karaf_features.rb +++ /dev/null @@ -1,17 +0,0 @@ -module Puppet::Parser::Functions - newfunction(:odl_karaf_features, :arity => 1, :type => :rvalue) do |args| - odl_settings = args[0] - features_set = odl_settings['metadata']['odl_features'] - - enabled_features = [] - enabled_features << features_set['default'] - enabled_features << features_set['odl-default'] - # only enable the new netvirt features when bgpvpn is enabled - enabled_features << features_set['ovsdb'] unless odl_settings['enable_bgpvpn'] - enabled_features << features_set['netvirt'] if odl_settings['enable_bgpvpn'] - enabled_features << features_set['sfc'] if odl_settings['enable_sfc'] - enabled_features << features_set[odl_settings['sfc_class']] if odl_settings['enable_sfc'] - - enabled_features.join(',') - end -end diff --git a/deployment_scripts/puppet/modules/opendaylight/lib/puppet/parser/functions/odl_network_scheme.rb b/deployment_scripts/puppet/modules/opendaylight/lib/puppet/parser/functions/odl_network_scheme.rb deleted file mode 100644 index 2cc9a2f..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/lib/puppet/parser/functions/odl_network_scheme.rb +++ /dev/null @@ -1,108 +0,0 @@ -module Puppet::Parser::Functions - newfunction(:odl_network_scheme, :arity => 2, :type => :rvalue, :doc => <<-ENDHEREDOC - Modify/override default network scheme. - In case of odl-ovsdb-openstack feature is enabled only br-int and br-ex - bridges are used and both of them should be created on OVS. - - input: - bgpvpn enabled or not - original network scheme - - output: overridden network scheme - - ENDHEREDOC - ) do |args| - - odl_bgpvpn_enabled, network_scheme = args - - # get original network scheme - orig_endpoints = network_scheme['endpoints'] - orig_roles = network_scheme['roles'] - orig_transformations = network_scheme['transformations'] - - # init overridden network scheme - endpoints = {} - roles = {} - transformations = [] - - # If bgpvpn extensions are enabled br-floating is not needed - delete_bridges = ['br-prv'] - - delete_bridges.each do |bridge| - transformations << { - 'override' => bridge, - 'override-action' => 'noop', - } - end - - orig_transformations.each do |tf| - case tf['action'] - when 'add-port' - transformations << { - 'override' => tf['name'], - 'override-action' => 'noop', - } if delete_bridges.include?(tf['bridge']) - when 'add-patch' - transformations << { - 'override' => 'patch-%s:%s' % tf['bridges'], - 'name' => 'patch__%s--%s' % tf['bridges'], - 'override-action' => 'noop', - } if delete_bridges.any? { |br| tf['bridges'].include? br } - end - end - - if not odl_bgpvpn_enabled - Puppet.debug 'Changing network_scheme for the non bgpvpn case' - - BRIDGE_MAPPING = { - 'br-ex' => 'br-ex-lnx', - 'br-floating' => 'br-ex' - } - - BRIDGE_MAPPING.each do |orig_br, br| - transformations << { - 'override' => orig_br, - 'name' => br, - } - end - - orig_transformations.each do |tf| - transformations << { - 'override' => tf['name'], - 'bridge' => BRIDGE_MAPPING[tf['bridge']], - } if BRIDGE_MAPPING.keys.any? { |br| br == tf['bridge'] } - end - - transformations << { - 'override' => 'patch-br-ex:br-floating', - 'bridges' => ['br-ex', 'br-ex-lnx'], - } - - orig_roles.each { |role, br| roles[role] = 'br-ex-lnx' if br == 'br-ex' } - - roles['neutron/private'] = 'br-aux' if orig_roles.key?('neutron/private') - roles['neutron/floating'] = 'br-ex' if orig_roles.key?('neutron/floating') - - endpoints['br-floating'] = '' if orig_endpoints.key? 'br-floating' - - if orig_endpoints.key? 'br-ex' - endpoints['br-ex-lnx'] = orig_endpoints['br-ex'] - endpoints['br-ex'] = orig_endpoints['br-floating'] || '' - endpoints['br-ex']['gateway'] ||= '' - endpoints['br-ex']['vendor_specific'] ||= {} - end - - if orig_endpoints.key? 'br-prv' - endpoints['br-aux'] = orig_endpoints['br-prv'] - endpoints['br-prv'] = '' - end - end - - # return overridden network scheme - { - 'endpoints' => endpoints, - 'roles' => roles, - 'transformations' => transformations.map { |tf| tf.merge({'action' => 'override'}) }, - } - end -end diff --git a/deployment_scripts/puppet/modules/opendaylight/lib/puppet/parser/functions/odl_ovsdb_managers.rb b/deployment_scripts/puppet/modules/opendaylight/lib/puppet/parser/functions/odl_ovsdb_managers.rb deleted file mode 100644 index 181b687..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/lib/puppet/parser/functions/odl_ovsdb_managers.rb +++ /dev/null @@ -1,12 +0,0 @@ -module Puppet::Parser::Functions - newfunction(:odl_ovsdb_managers, :arity => 1, :type => :rvalue, :doc => <<-'EOS' - @desc Creates list of ovsdb managers used in ovs-vsctl set-manager command - @input ['192.168.1.7', ....] - @return 'tcp:192.168.1.7:6640 ....' - @example odl_ovsdb_managers($ovsdb_mng) - EOS - ) do |args| - managers = args.flatten.map { |ip| "tcp:#{ip}:6640" } - managers.join(' ') - end -end diff --git a/deployment_scripts/puppet/modules/opendaylight/manifests/ha/haproxy.pp b/deployment_scripts/puppet/modules/opendaylight/manifests/ha/haproxy.pp deleted file mode 100644 index 5a9534f..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/manifests/ha/haproxy.pp +++ /dev/null @@ -1,60 +0,0 @@ -# -# Copyright 2015 Mirantis, Inc. -# -# 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. -# -class opendaylight::ha::haproxy { - - include opendaylight - - $public_vip = hiera('public_vip') - $management_vip = hiera('management_vip') - $api_port = $opendaylight::rest_api_port - $jetty_port = $opendaylight::jetty_port - - # defaults for any haproxy_service within this class - Openstack::Ha::Haproxy_service { - internal_virtual_ip => $management_vip, - ipaddresses => $opendaylight::odl_mgmt_ips, - public_virtual_ip => $public_vip, - server_names => $opendaylight::odl_nodes_names, - public => true, - internal => true, - } - - openstack::ha::haproxy_service { 'odl-jetty': - order => '216', - listen_port => $jetty_port, - haproxy_config_options => { - 'option' => ['httpchk /index.html', 'httplog'], - 'timeout client' => '3h', - 'timeout server' => '3h', - 'balance' => 'source', - 'mode' => 'http' - }, - balancermember_options => 'check inter 2000 fall 3', - } - - openstack::ha::haproxy_service { 'odl-neutron-endpoint': - order => '215', - listen_port => $api_port, - haproxy_config_options => { - 'option' => ['httpchk /index', 'httplog'], - 'timeout client' => '3h', - 'timeout server' => '3h', - 'balance' => 'source', - 'mode' => 'http' - }, - balancermember_options => 'check inter 5000 rise 2 fall 3', - } -} diff --git a/deployment_scripts/puppet/modules/opendaylight/manifests/hiera_override.pp b/deployment_scripts/puppet/modules/opendaylight/manifests/hiera_override.pp deleted file mode 100644 index 3d75395..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/manifests/hiera_override.pp +++ /dev/null @@ -1,29 +0,0 @@ -class opendaylight::hiera_override { - include opendaylight - $override_file = '/etc/hiera/plugins/opendaylight.yaml' - - # override network scheme - $orig_network_scheme = hiera_hash('network_scheme') - $network_scheme = odl_network_scheme($opendaylight::odl_settings['enable_bgpvpn'], $orig_network_scheme) - $ovsdb_managers = odl_ovsdb_managers($opendaylight::odl_mgmt_ips) - - # exclude overridden configuration w/o neighbor roles - $neighbors = ['primary-controller', 'controller', 'compute'] - $standalone_mode = roles_include(['opendaylight']) and !roles_include($neighbors) - - $odl_hiera_yaml = odl_hiera_overrides( - $opendaylight::odl_settings, - hiera('neutron_config'), - hiera('neutron_advanced_configuration'), - $network_scheme, - hiera('management_vip'), - $standalone_mode - ) - - file { $override_file: - ensure => present, - owner => 'root', - group => 'root', - content => $odl_hiera_yaml, - } -} diff --git a/deployment_scripts/puppet/modules/opendaylight/manifests/init.pp b/deployment_scripts/puppet/modules/opendaylight/manifests/init.pp deleted file mode 100644 index 69cc23a..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/manifests/init.pp +++ /dev/null @@ -1,12 +0,0 @@ -class opendaylight { - $odl_settings = hiera('opendaylight') - $network_metadata = hiera_hash('network_metadata') - $node_uid = hiera('uid') - $rest_api_port = $odl_settings['rest_api_port'] - $jetty_port = $odl_settings['metadata']['jetty_port'] - $odl_nodes_hash = get_nodes_hash_by_roles($network_metadata, ['opendaylight']) - $odl_mgmt_ips_hash = get_node_to_ipaddr_map_by_network_role($odl_nodes_hash, 'management') - $odl_mgmt_ips = values($odl_mgmt_ips_hash) - $odl_nodes_names = keys($odl_mgmt_ips_hash) - $node_internal_address = $odl_mgmt_ips_hash["node-${node_uid}"] -} diff --git a/deployment_scripts/puppet/modules/opendaylight/manifests/install.pp b/deployment_scripts/puppet/modules/opendaylight/manifests/install.pp deleted file mode 100644 index 2c3d776..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/manifests/install.pp +++ /dev/null @@ -1,93 +0,0 @@ -class opendaylight::install ( - $rest_port = $opendaylight::rest_api_port, - $bind_address = undef, -) inherits opendaylight { - - $management_vip = hiera('management_vip') - $conf_dir = '/opt/opendaylight/etc' - $jetty_port = $opendaylight::jetty_port - $odl_package = $opendaylight::odl_settings['deb_version'] - $java_min_mem = $opendaylight::odl_settings['java_min_mem'] - $java_max_mem = $opendaylight::odl_settings['java_max_mem'] - $java_extra_opts = $opendaylight::odl_settings['java_extra_opts'] - - $manage_l3_traffic = $opendaylight::odl_settings['enable_l3_odl'] ? { - true => 'yes', - default => 'no', - } - - package { 'opendaylight': - ensure => $odl_package, - } - - #Temporary solution until number of allowed open files - #will be fixed in main systemd service file - file {'/etc/systemd/system/opendaylight.service.d': - ensure => directory, - } -> - file {'/etc/systemd/system/opendaylight.service.d/override.conf': - ensure => file, - content => template('opendaylight/override.conf.erb'), - } ~> - exec {'systemctl-daemon-reload': - refreshonly => true, - command => 'systemctl daemon-reload', - path => ['/bin', '/user/bin'], - } - - firewall {'215 odl': - port => [ $opendaylight::rest_api_port, 6633, 6640, 6653, $jetty_port, 8101], - proto => 'tcp', - action => 'accept', - } - - service { 'opendaylight' : - ensure => running, - enable => true, - } - - debug("Set odl rest api port to ${rest_port}") - - file { "${conf_dir}/jetty.xml": - ensure => file, - owner => 'odl', - content => template('opendaylight/jetty.xml.erb') - } - file { '/opt/opendaylight/bin/setenv': - ensure => file, - owner => 'odl', - mode => '0755', - content => template('opendaylight/setenv.erb') - } - - $karaf_custom_properties_file = { - 'path' => "${conf_dir}/custom.properties", - 'ensure' => 'present', - 'key_val_separator' => '=', - } - $karaf_custom_properties = { - '' => { - 'ovsdb.of.version' => '1.3', - 'ovsdb.l3.fwd.enabled' => $manage_l3_traffic, - } - } - - create_ini_settings($karaf_custom_properties, $karaf_custom_properties_file) - - $enabled_features = odl_karaf_features($opendaylight::odl_settings) - - ini_setting {'karaf_features': - ensure => present, - section => '', - key_val_separator => '=', - path => "${conf_dir}/org.apache.karaf.features.cfg", - setting => 'featuresBoot', - value => $enabled_features, - } - - Package['opendaylight'] -> - Ini_setting <||> -> - Firewall <||> -> - File <||> ~> - Service['opendaylight'] -} diff --git a/deployment_scripts/puppet/modules/opendaylight/manifests/quagga.pp b/deployment_scripts/puppet/modules/opendaylight/manifests/quagga.pp deleted file mode 100644 index b97a174..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/manifests/quagga.pp +++ /dev/null @@ -1,29 +0,0 @@ -class opendaylight::quagga ( -){ - $master_ip = hiera('master_ip') - - firewall {'215 quagga': - dport => 179, - proto => 'tcp', - action => 'accept', - } - - $service_file = '/etc/systemd/system/zrpcd.service' - file { $service_file: - ensure => file, - content => template('opendaylight/zrpcd.service'), - } - - if $::operatingsystem == 'Ubuntu' { - exec { 'install_quagga': - command => "curl http://${master_ip}:8080/plugins/opendaylight-1.0/deployment_scripts/install_quagga.sh | bash -s", - path => '/usr/bin:/usr/sbin:/bin:/sbin', - timeout => 0, - require => File[$service_file], - before => Service['zrpcd'] - } - service {'zrpcd': - ensure => running - } - } -} diff --git a/deployment_scripts/puppet/modules/opendaylight/manifests/service.pp b/deployment_scripts/puppet/modules/opendaylight/manifests/service.pp deleted file mode 100644 index fcc8bd1..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/manifests/service.pp +++ /dev/null @@ -1,23 +0,0 @@ -class opendaylight::service { - include opendaylight::ha::haproxy - - $management_vip = hiera('management_vip') - $odl = $opendaylight::odl_settings - $user = $odl['metadata']['default_credentials']['user'] - $password = $odl['metadata']['default_credentials']['password'] - - $rest_port = $opendaylight::rest_api_port - - if roles_include(['primary-controller']) { - exec { 'wait-until-odl-ready': - command => join([ - "curl -o /dev/null --fail --silent --head -u ${user}:${password}", - "http://${management_vip}:${rest_port}/restconf/operational/network-topology:network-topology/topology/netvirt:1" - ], ' '), - path => '/bin:/usr/bin', - tries => 60, - try_sleep => 20, - require => Class['opendaylight::ha::haproxy'], - } - } -} diff --git a/deployment_scripts/puppet/modules/opendaylight/manifests/sfc.pp b/deployment_scripts/puppet/modules/opendaylight/manifests/sfc.pp deleted file mode 100644 index 7a9e919..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/manifests/sfc.pp +++ /dev/null @@ -1,26 +0,0 @@ -class opendaylight::sfc { - include opendaylight - - $management_vip = hiera('management_vip') - $odl = $opendaylight::odl_settings - $rest_port = $opendaylight::rest_api_port - $user = $odl['metadata']['default_credentials']['user'] - $password = $odl['metadata']['default_credentials']['password'] - - if $odl['enable_sfc'] { - if $odl['sfc_class']=='ncr' { - exec { 'odl_netvirt_coexistence': - command => "/usr/bin/curl -i -u ${user}:${password} \ --H 'Content-type: application/json' \ --X PUT -d '{\"netvirt-providers-config\":{\"table-offset\":\"1\"}}' \ -http://${management_vip}:${rest_port}/restconf/config/netvirt-providers-config:netvirt-providers-config", - } - exec { 'odl_sfc_coexistence': - command => "/usr/bin/curl -i -u ${user}:${password} \ --H 'Content-type: application/json' -X PUT -d \ -'{\"sfc-of-renderer-config\":{\"sfc-of-table-offset\":\"150\",\"sfc-of-app-egress-table-offset\":\"11\"}}' \ -http://${management_vip}:${rest_port}/restconf/config/sfc-of-renderer:sfc-of-renderer-config", - } - } - } -} diff --git a/deployment_scripts/puppet/modules/opendaylight/manifests/vxgpe.pp b/deployment_scripts/puppet/modules/opendaylight/manifests/vxgpe.pp deleted file mode 100644 index b00c846..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/manifests/vxgpe.pp +++ /dev/null @@ -1,12 +0,0 @@ -class opendaylight::vxgpe { - firewall {'215 vxlan-gpe tcp': - dport => [ 6633 ], - proto => 'tcp', - action => 'accept', - } - firewall {'215 vxlan-gpe udp': - dport => [ 6633 ], - proto => 'udp', - action => 'accept', - } -} \ No newline at end of file diff --git a/deployment_scripts/puppet/modules/opendaylight/templates/jetty.xml.erb b/deployment_scripts/puppet/modules/opendaylight/templates/jetty.xml.erb deleted file mode 100644 index 42cdf0b..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/templates/jetty.xml.erb +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - default="<%= @bind_address %>" <% end %> /> - - - - - 300000 - 2 - false - 8443 - 20000 - 5000 - - - - - - - - - default="<%= @bind_address %>" <% end %> /> - - - - - 300000 - 2 - false - 8443 - 20000 - 5000 - - - - - - - - - - - - - - - karaf - karaf - - - org.apache.karaf.jaas.boot.principal.RolePrincipal - - - - - - - - - - default - karaf - - - org.apache.karaf.jaas.boot.principal.RolePrincipal - - - - - - - - diff --git a/deployment_scripts/puppet/modules/opendaylight/templates/override.conf.erb b/deployment_scripts/puppet/modules/opendaylight/templates/override.conf.erb deleted file mode 100644 index e18b259..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/templates/override.conf.erb +++ /dev/null @@ -1,2 +0,0 @@ -[Service] -LimitNOFILE=102400 diff --git a/deployment_scripts/puppet/modules/opendaylight/templates/setenv.erb b/deployment_scripts/puppet/modules/opendaylight/templates/setenv.erb deleted file mode 100644 index a9d2252..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/templates/setenv.erb +++ /dev/null @@ -1,3 +0,0 @@ -export JAVA_MIN_MEM=<%= @java_min_mem %> -export JAVA_MAX_MEM=<%= @java_max_mem %> -export EXTRA_JAVA_OPTS=<%= @java_extra_opts %> diff --git a/deployment_scripts/puppet/modules/opendaylight/templates/zrpcd.service b/deployment_scripts/puppet/modules/opendaylight/templates/zrpcd.service deleted file mode 100644 index d8f88ba..0000000 --- a/deployment_scripts/puppet/modules/opendaylight/templates/zrpcd.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=ZRPC daemon for quagga -After=network.service - -[Service] -ExecStart=/opt/quagga/sbin/zrpcd -Type=simple -PIDFile=/var/run/zrpcd.pid - -[Install] -WantedBy=default.target diff --git a/deployment_tasks.yaml b/deployment_tasks.yaml deleted file mode 100644 index f818932..0000000 --- a/deployment_tasks.yaml +++ /dev/null @@ -1,276 +0,0 @@ -- id: opendaylight - type: group - role: [opendaylight] - requires: [deploy_start] - required_for: [deploy_end, primary-controller, controller] - tasks: [hiera, setup_repositories, fuel_pkgs, globals, tools, logging, netconfig, odl_install] - parameters: - strategy: - type: parallel - -- id: odl_install - type: puppet - version: 2.1.0 - groups: [opendaylight] - requires: [deploy_start] - required_for: [openstack-network-start, odl_configure] - requires: [hosts, firewall, globals, netconfig] - condition: - yaql_exp: changedAny($.network_metadata.vips.get('management'), $.opendaylight) - parameters: - puppet_manifest: puppet/manifests/odl-install.pp - puppet_modules: puppet/modules:/etc/puppet/modules - timeout: 3000 - -# We remove override file, because 'odl_hiera_override' task is not reenterant and -# cannot correctly handled data on subsequent calls -- id: odl_remove_hiera - type: puppet - version: 2.1.0 - groups: [primary-controller, controller, compute, opendaylight] - required_for: [odl_hiera_override] - condition: - yaql_exp: &hiera_override > - changedAny($.network_metadata.vips.get('management'), $.quantum_settings, - $.opendaylight, $.neutron_advanced_configuration) - parameters: - puppet_manifest: puppet/manifests/remove-odl-override.pp - puppet_modules: puppet/modules:/etc/puppet/modules - timeout: 30 - -- id: odl_hiera_override - type: puppet - groups: [primary-controller, controller, compute, opendaylight] - version: 2.1.0 - required_for: [netconfig] - requires: [globals] - condition: - yaql_exp: *hiera_override - parameters: - puppet_manifest: puppet/manifests/hiera-override.pp - puppet_modules: puppet/modules:/etc/puppet/modules - timeout: 120 - -- id: odl_configure - type: puppet - version: 2.1.0 - groups: [primary-controller, controller] - requires: [deploy_start, primary-cluster-haproxy, cluster-haproxy] - required_for: [openstack-network-common-config, openstack-haproxy, openstack-network-end] - cross-depends: - - name: odl_install - condition: - yaql_exp: > - changedAny($.network_metadata.vips, $.opendaylight, - $.network_metadata.nodes.values().where($.node_roles.contains('opendaylight')).network_roles.management) - parameters: - puppet_manifest: puppet/manifests/odl-service.pp - puppet_modules: puppet/modules:/etc/puppet/modules - timeout: 1400 - -- id: odl_sfc - type: puppet - version: 2.1.0 - groups: [primary-controller] - required_for: [openstack-network-common-config] - requires: [openstack-network-start] - condition: - yaql_exp: $.opendaylight.enable_sfc and changedAny($.network_metadata.vips.get('management'), $.opendaylight) - parameters: - puppet_manifest: puppet/manifests/odl-sfc.pp - puppet_modules: puppet/modules:/etc/puppet/modules - timeout: 120 - -- id: odl_vxgpe - type: puppet - version: 2.1.0 - groups: [compute, compute-vmware] - required_for: [openstack-network-common-config] - requires: [openstack-network-start] - parameters: - puppet_manifest: puppet/manifests/odl-vxgpe.pp - puppet_modules: puppet/modules:/etc/puppet/modules - timeout: 60 - -- id: openstack-network-common-config - type: puppet - version: 2.1.0 - groups: [primary-controller, controller, compute] - required_for: [openstack-network-end] - requires: [openstack-network-start] - cross-depends: - - name: odl_sfc - condition: - yaql_exp: > - changedAny($.opendaylight, $.get('openstack_network'), $.debug, - $.quantum_settings, $.neutron_advanced_configuration, $.rabbit, - $.ceilometer, $.network_scheme, $.get('use_syslog'), - $.get('use_stderr'), $.get('syslog_log_facility_neutron'), - $.network_metadata.nodes.values().where( - $.node_roles.any($.matches('controller'))).network_roles.select( - $.get('mgmt/messaging')), - $.get('amqp_hosts'), $.get('kombu_compression')) - parameters: - puppet_manifest: puppet/manifests/odl-common_config.pp - puppet_modules: puppet/modules:/etc/puppet/modules - timeout: 1800 - -- id: primary-openstack-network-plugins-l2 - type: puppet - version: 2.1.0 - groups: [primary-controller] - required_for: [openstack-network-end] - requires: [openstack-network-start, openstack-network-common-config, primary-openstack-network-server-config] - condition: - yaql_exp: &network_plugins_l2 > - changedAny($.quantum, $.configuration, $.fqdn, - $.get('neutron_primary_controller_roles'), - $.get('neutron_compute_nodes'), $.quantum_settings, $.public_ssl, - $.get('use_ssl'), $.get('region'), $.network_scheme, - $.neutron_advanced_configuration) - refresh_on: [neutron_agent_ovs] - parameters: - puppet_manifest: puppet/manifests/odl-ml2-configuration.pp - puppet_modules: puppet/modules:/etc/puppet/modules - timeout: 1800 - -- id: openstack-network-plugins-l2 - type: puppet - version: 2.1.0 - groups: [controller, compute] - required_for: [openstack-network-end] - requires: [openstack-network-start, openstack-network-common-config, openstack-network-server-config] - condition: - yaql_exp: *network_plugins_l2 - cross-depends: - - name: primary-openstack-network-plugins-l2 - parameters: - puppet_manifest: puppet/manifests/odl-ml2-configuration.pp - puppet_modules: puppet/modules:/etc/puppet/modules - timeout: 1800 - -# We have two tracks here. -# If user wants to use ODL to control L3 traffic -# then we skip tasks which spawn neutron L3 agents -# and move networks and router creation on the end. -# In other case standard path is preserved, but additional -# condition is added to tasks -- id: primary-openstack-network-agents-l3 - type: puppet - version: 2.1.0 - groups: [primary-controller] - required_for: [openstack-network-end] - requires: [openstack-network-start, openstack-network-networks, openstack-network-routers, primary-openstack-network-plugins-l2] - refresh_on: [neutron_l3_agent_config] - condition: - yaql_exp: &network_agents_l3 > - not $.opendaylight.enable_l3_odl and changedAny($.quantum, $.neutron_advanced_configuration, - $.get('neutron_controller_roles'), $.get('neutron_compute_nodes'), - $.debug, $.configuration, $.network_scheme, - ('primary-controller' in $.roles)) - parameters: - puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/agents/l3.pp - puppet_modules: /etc/puppet/modules - timeout: 1800 - -- id: openstack-network-agents-l3 - type: puppet - version: 2.1.0 - groups: [controller, compute] - required_for: [openstack-network-end] - requires: [openstack-network-start, openstack-network-networks, openstack-network-routers, openstack-network-plugins-l2] - condition: - yaql_exp: *network_agents_l3 - refresh_on: [neutron_l3_agent_config] - cross-depends: - - name: primary-openstack-network-plugins-l2 - - name: primary-openstack-network-agents-l3 - parameters: - puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/agents/l3.pp - puppet_modules: /etc/puppet/modules - timeout: 1800 - -# POST DEPLOYMENT -# Additional task for routers when L3 HA is enabled -# HA routers must be created on post-deployment step when all L3 agents are available -- id: openstack-network-networks - type: skipped - groups: [primary-controller] - -- id: odl-openstack-network-networks - type: puppet - version: 2.1.0 - role: [primary-controller] - required_for: [post_deployment_end] - requires: [post_deployment_start] - condition: - yaql_exp: changedAny($.access, $.quantum_settings, $.quantum) - parameters: - puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/networks.pp - puppet_modules: /etc/puppet/modules - timeout: 1800 - -- id: openstack-network-routers - type: skipped - groups: [primary-controller] - -- id: odl-openstack-network-routers - type: puppet - version: 2.1.0 - role: [primary-controller] - requires: [post_deployment_start, odl-openstack-network-networks] - required_for: [post_deployment_end] - condition: - yaql_exp: > - not $.neutron_advanced_configuration.neutron_l3_ha and - changed($.neutron_advanced_configuration.neutron_l3_ha) - parameters: - puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/routers.pp - puppet_modules: /etc/puppet/modules - timeout: 1800 - -- id: openstack-network-routers-ha - type: puppet - version: 2.1.0 - role: [primary-controller] - condition: - yaql_exp: > - not $.opendaylight.enable_l3_odl and - $.neutron_advanced_configuration.neutron_l3_ha and - changed($.neutron_advanced_configuration.neutron_l3_ha) - required_for: [post_deployment_end] - requires: [post_deployment_start] - parameters: - puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/routers.pp - puppet_modules: /etc/puppet/modules - timeout: 1800 - -- id: configure_default_route - type: puppet - version: 2.1.0 - role: [primary-mongo, mongo] - requires: [post_deployment_start] - required_for: [post_deployment_end] - condition: - yaql_exp: > - not $.opendaylight.enable_l3_odl and - changedAny($.network_scheme, $.network_metadata.vips.get('management')) - parameters: - puppet_manifest: /etc/puppet/modules/osnailyfacter/modular/netconfig/configure_default_route.pp - puppet_modules: /etc/puppet/modules - timeout: 3600 - -- id: odl_dashboard_registration - type: puppet - version: 2.1.0 - role: [primary-controller] - required_for: [post_deployment_end] - requires: [post_deployment_start] - condition: - yaql_exp: > - changedAny($.deployment_id, $.master_ip, $.opendaylight, - $.network_metadata.vips.get('public', {}).get('ipaddr')) - parameters: - puppet_manifest: puppet/manifests/odl-dashboard.pp - puppet_modules: puppet/modules:/etc/puppet/modules - timeout: 180 diff --git a/doc/Makefile b/doc/Makefile deleted file mode 100644 index c485250..0000000 --- a/doc/Makefile +++ /dev/null @@ -1,177 +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) source -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext - -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 " 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)" - -clean: - rm -rf $(BUILDDIR)/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -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." - -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/FuelOpenDaylightplugin.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/FuelOpenDaylightplugin.qhc" - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/FuelOpenDaylightplugin" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/FuelOpenDaylightplugin" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -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)." - -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." - -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." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -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)." - -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." - -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -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." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." - -xml: - $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml - @echo - @echo "Build finished. The XML files are in $(BUILDDIR)/xml." - -pseudoxml: - $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml - @echo - @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/doc/requirements.txt b/doc/requirements.txt deleted file mode 100644 index f088b05..0000000 --- a/doc/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -docutils==0.9.1 -sphinx>=1.1.2,!=1.2.0,<1.3 -oslosphinx>=4.10 diff --git a/doc/source/build.rst b/doc/source/build.rst deleted file mode 100644 index 0d3a447..0000000 --- a/doc/source/build.rst +++ /dev/null @@ -1,28 +0,0 @@ -How to build the plugin from source -=================================== - -Plugin build process depends on followin list of tools: - -* Docker_ -* python fuel-plugin-builder_ tool version 4.2.0 or higher -* git -* wget -* ~6 GB of free space - -After installing all needed dependencies start build process: - -.. code-block:: bash - - $ git clone https://github.com/openstack/fuel-plugin-opendaylight - $ cd fuel-plugin-opendaylight - $ fpb --build . - -If you want to monitor what actions are performed during plugin build add -``--debug`` option: - -.. code-block:: bash - - $ fpb --debug --build . - -.. _Docker: https://docker.com/ -.. _fuel-plugin-builder: https://pypi.python.org/pypi/fuel-plugin-builder/4.2.0 diff --git a/doc/source/conf.py b/doc/source/conf.py deleted file mode 100644 index dee9967..0000000 --- a/doc/source/conf.py +++ /dev/null @@ -1,258 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Fuel OpenDaylight plugin documentation build configuration file, created by -# sphinx-quickstart on Thu Feb 16 16:36:14 2017. -# -# 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 - -# 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 = [ 'oslosphinx' ] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -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 = u'Fuel OpenDaylight plugin' -copyright = u'2017, Fuel OpenDaylight plugin team' - -# 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 = '1.0.0' -# The full version, including alpha/beta/rc tags. -release = '1.0.0' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#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. -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 - - -# -- 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 = 'default' - -# 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 = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# 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 = None - -# The name of an image file (within the static path) to use as 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 '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# 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 - -# Output file base name for HTML help builder. -htmlhelp_basename = 'FuelOpenDaylightplugindoc' - - -# -- 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': '', -} - -# 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 = [ - ('index', 'FuelOpenDaylightplugin.tex', u'Fuel OpenDaylight plugin Documentation', - u'Fuel OpenDaylight plugin team', '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 = [ - ('index', 'fuelopendaylightplugin', u'Fuel OpenDaylight plugin Documentation', - [u'Fuel OpenDaylight plugin team'], 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 = [ - ('index', 'FuelOpenDaylightplugin', u'Fuel OpenDaylight plugin Documentation', - u'Fuel OpenDaylight plugin team', 'FuelOpenDaylightplugin', '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 diff --git a/doc/source/configuration.rst b/doc/source/configuration.rst deleted file mode 100644 index 4c2937b..0000000 --- a/doc/source/configuration.rst +++ /dev/null @@ -1,27 +0,0 @@ -Configuration -============= - -Most common options of the plugin are following: - -#. Use ODL to manage L3 traffic -- this options configures OpenvSwitch for - managing L3 traffic on compute nodes. If you want to enable this setting, - first you need to assign public network to all nodes - (on :guilabel:`Networks`/`Other` pane check :guilabel:`Assign public network - to all nodes`) - -#. Use SFC features - -#. BGPVPN extensions - -#. Use V2 ML driver - -#. OpenDaylight package version -- plugin might be built with multiple versions - of OpenDaylight. In this text field you enter version that will be - installed. - - -OpenDaylight without L3 support -------------------------------- - -OpenDaylight with L3 support ----------------------------- diff --git a/doc/source/index.rst b/doc/source/index.rst deleted file mode 100644 index d627fed..0000000 --- a/doc/source/index.rst +++ /dev/null @@ -1,16 +0,0 @@ -Welcome to Fuel OpenDaylight plugin's documentation! -==================================================== - -The Fuel OpenDaylight plugin allows OpenStack operator to utilize OpenDaylight -SDN controller as networking backend for Neutron (OpenStack networking -component). - -Contents: - -.. toctree:: - :maxdepth: 2 - - installation - configuration - limitations - build diff --git a/doc/source/installation.rst b/doc/source/installation.rst deleted file mode 100644 index d6dd425..0000000 --- a/doc/source/installation.rst +++ /dev/null @@ -1,23 +0,0 @@ -Installation -============ - -#. Upload the plugin .rpm to the Fuel master node. - -#. Install the plugin with the ``fuel`` command-line tool: - - .. code-block:: bash - - [root@nailgun ~] fuel plugins --install opendaylight-1.0-1.0.0-1.noarch.rpm - - -Uninstallation -============== - -The plugin can be uninstalled only when there are no OpenStack envrionments -that are using it. - -Uninstall the plugin by running following command: - - .. code-block:: bash - - [root@nailgun ~] fuel plugins --remove opendaylight==1.0.0 diff --git a/doc/source/limitations.rst b/doc/source/limitations.rst deleted file mode 100644 index 44611a0..0000000 --- a/doc/source/limitations.rst +++ /dev/null @@ -1,7 +0,0 @@ -Limitations -=========== - -Plugin does not support HA deployment of OpenDaylight ------------------------------------------------------ - -Plugin does not allow to assign OpenDaylight role to more than one node. diff --git a/environment_config.yaml b/environment_config.yaml deleted file mode 100644 index 7d0ddff..0000000 --- a/environment_config.yaml +++ /dev/null @@ -1,127 +0,0 @@ -attributes: - enable_l3_odl: - weight: 10 - type: "checkbox" - value: false - label: "Use ODL to manage L3 traffic" - restrictions: - - networking_parameters:segmentation_type == 'vlan': Use tunneling segmentation type. - - settings:public_network_assignment.assign_to_all_nodes.value == false: Assign public network to all nodes - enable_sfc: - weight: 20 - type: "checkbox" - value: false - label: "SFC features" - sfc_class: - weight: 21 - type: "select" - value: "ncr" - label: "Classifier used by SFC" - values: - - data: "ncr" - label: "NetVirt" - - data: "gcr" - label: "GBP" - description: - > - Classifier determines what traffic needs to be chained based on policy based on yang model. - The OpenDaylight actually supports the OVSDB NetVirt and the GBP classifier in case of SFC. - restrictions: - - condition: "settings:opendaylight.enable_sfc.value == false" - action: "hide" - enable_bgpvpn: - weight: 40 - type: "checkbox" - value: false - label: "BGPVPN extensions" - description: - > - This enables the bgpvpn extension of neutron together with the - corresponding sdnvpn features in odl. This feature will disable - the standard ovsdb feature from ODL. - restrictions: - - condition: "settings:bgpvpn == null or settings:bgpvpn.metadata.enabled == false" - strict: false - message: "BGPVPN (fuel-plugin-bgpvpn) plugin must be installed and enabled." - - networking_parameters:segmentation_type == 'vlan': This feature works only with segmentation_type != vlan - - condition: "settings:opendaylight.enable_l3_odl.value == false" - strict: false - message: "OpenDaylight must be acting as the L3 controller for the bgpvpn features to be enabled." - - condition: "settings:opendaylight.deb_version.value != '5.2.0-1'" - strict: false - message: "The BGPVPN features only support OpenDaylight 5.2.0-1. The OpenDaylight package version field must be set to that value." - odl_v2: - weight: 60 - type: "checkbox" - value: false - label: "Use V2 ML2 driver" - description: "V2 version is considered as experimental" - rest_api_port: - value: '8282' - label: 'Port number' - description: 'Port on which ODL REST API will be available.' - weight: 70 - type: "text" - regex: - source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$ - error: 'Invalid port number' - java_min_mem: - value: '1g' - label: 'Java -Xms option' - description: 'Initial memory allocation pool.' - weight: 80 - type: "text" - java_max_mem: - value: '2g' - label: 'Java -Xmx option' - description: 'Maximum memory allocation pool.' - weight: 81 - type: "text" - java_extra_opts: - value: '-XX:+UseG1GC' - label: 'Java extra options' - description: 'Additional options.' - weight: 82 - type: "text" - deb_version: - value: '5.0.0-1' - label: 'OpenDaylight package version' - description: 'Plugin can be built with more than one version of ODL.' - weight: 90 - type: "text" - metadata: - restrictions: - - "cluster:net_provider != 'neutron'": "Only neutron is supported by OpenDaylight" - odl_features: - default: - - config - - standard - - region - - package - - kar - - ssh - - management - odl-default: - - odl-restconf-all - - odl-aaa-authn - - odl-dlux-all - gcr: - - odl-groupbasedpolicy-ovssfc - ncr: - - odl-ovsdb-sfc - - odl-ovsdb-sfc-rest - ovsdb: - - odl-ovsdb-openstack - netvirt: - - odl-netvirt-openstack - sfc: - - odl-sfc-model - - odl-sfc-provider - - odl-sfc-provider-rest - - odl-sfc-ovs - - odl-sfc-openflow-renderer - - odl-sfc-ui - default_credentials: - user: admin - password: admin - jetty_port: 8181 diff --git a/metadata.yaml b/metadata.yaml deleted file mode 100644 index 7b69e35..0000000 --- a/metadata.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# Plugin name -name: opendaylight -# Human-readable name for your plugin -title: OpenDaylight plugin -# Plugin version -version: '1.0.0' -# Description -description: 'This plugin provides OpenDaylight as a backend for neutron.' -# Required fuel version -fuel_version: ['10.0'] -# Specify license of your plugin -licenses: ['Apache License Version 2.0'] -# Specify author or company name -authors: ['Michal Skalski', 'Nikolas Hermanns'] -# A link to the plugin's page -homepage: 'https://github.com/openstack/fuel-plugin-opendaylight' -# Specify a group which your plugin implements, possible options: -# network, storage, storage::cinder, storage::glance, hypervisor -groups: ['network'] - -# The plugin is compatible with releases in the list -releases: - - os: ubuntu - version: newton-10.0 - mode: ['ha'] - deployment_scripts_path: deployment_scripts/ - repository_path: repositories/ubuntu - -# Version of plugin package -package_version: '4.0.0' - -is_hotpluggable: false diff --git a/node_roles.yaml b/node_roles.yaml deleted file mode 100644 index 732496d..0000000 --- a/node_roles.yaml +++ /dev/null @@ -1,9 +0,0 @@ -opendaylight: - name: "OpenDaylight controller" - description: "Install and setup OpenDaylight SDN controller" - has_primary: false # whether has primary role or not - public_ip_required: false # whether requires public net or not - weight: 150 # weight that will be used for ordering on fuel ui - limits: - max: 1 - min: 1 diff --git a/pre_build_hook b/pre_build_hook deleted file mode 100755 index ab8b0a6..0000000 --- a/pre_build_hook +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/bash -set -eux -USE_CACHE=${USE_CACHE:-true} -ODL_INTEGRATION_PACKAGING=${ODL_INTEGRATION_PACKAGING:-https://github.com/opendaylight/integration-packaging} - -# ODL versions to build, separated by space -# Taken from https://github.com/opendaylight/integration-packaging/blob/master/deb/build_vars.yaml -# If more than one version of ODL are included make sure that local -# fpb contain this commit https://review.openstack.org/#/c/311031/ -ODL_VERSIONS=${ODL_VERSIONS:-5.0.0.1 5.2.0.1} - -#Networking odl -NETWORKING_ODL_REPO=${NETWORKING_ODL_REPO:-http://ubuntu-cloud.archive.canonical.com/ubuntu/pool/main/n/networking-odl/} -NETWORKING_ODL_DEB=${NETWORKING_ODL_DEB:-python-networking-odl_2.0.1~git20160926.416a5c7-0ubuntu1~cloud0_all.deb} - -DIR="$(dirname `readlink -f $0`)" -CACHE_DIR="${DIR}/.cache" -CACHE_DEB_DIR="${CACHE_DIR}/integration-packaging/deb/cache" - -# OPNFV builds plugin inside container, in that case -# we need to use sudo to have access to docker -OPNFV_BUILD=${OPNFV_BUILD:-false} -if [ "$OPNFV_BUILD" == true ] ;then - SUDO="sudo" -else - SUDO=" " -fi - -function prep_build_env { - docker_build_opts="-t odl_deb" - if [ "$USE_CACHE" != true ] || [ ! -d "${CACHE_DIR}/integration-packaging" ] ;then - rm -rf ${CACHE_DIR}/integration-packaging - git clone ${ODL_INTEGRATION_PACKAGING} ${CACHE_DIR}/integration-packaging - docker_build_opts+=" --no-cache" - fi - $SUDO docker build ${docker_build_opts} ${CACHE_DIR}/integration-packaging/deb -} - -function build_odl_deb { - $SUDO docker run -u $(id -u) --rm -v ${CACHE_DIR}/integration-packaging/deb:/build odl_deb -v ${1//./ } - rm -rf ${CACHE_DIR}/integration-packaging/deb/opendaylight -} - -function in_cache { - [ -f "${CACHE_DEB_DIR}/${1}" ] -} - -function copy_from_cache { - cp ${CACHE_DEB_DIR}/${1} ${DIR}/repositories/ubuntu/${1} -} - -command -v docker >/dev/null 2>&1 || { echo >&2 "Docker is required but it's not installed. Aborting."; exit 1; } - -mkdir -p "${CACHE_DIR}" -prep_build_env -rm -f ${DIR}/repositories/ubuntu/*.deb - -for v in $ODL_VERSIONS -do - deb_name="opendaylight_${v%.*}-${v##*.}_all.deb" - if ! in_cache $deb_name ;then - build_odl_deb $v - fi - copy_from_cache $deb_name -done - -if ! in_cache $NETWORKING_ODL_DEB ;then - wget -O ${CACHE_DEB_DIR}/${NETWORKING_ODL_DEB} ${NETWORKING_ODL_REPO}/${NETWORKING_ODL_DEB} -fi -copy_from_cache $NETWORKING_ODL_DEB - -curl https://raw.githubusercontent.com/6wind/zrpcd/eddf5bd6305ef52a2d39df99860c734935dbc4af/pkgsrc/dev_compile_script.sh -o deployment_scripts/install_quagga.sh -# ubuntu 16.04 compatibility -sed -i 's/libboost1.55/libboost1.58/' deployment_scripts/install_quagga.sh -# pin the versions of things that the compile script downloads. -# These are the latest commits at the time this script was written. -sed -i 's/cd zrpcd/cd zrpcd \&\& git checkout eddf5bd6305ef52a2d39df99860c734935dbc4af/' deployment_scripts/install_quagga.sh -sed -i 's/quagga_110_mpbgp_capnp/95bb0f4a5/' deployment_scripts/install_quagga.sh -# pin thrift to the latest version at this point in time -sed -i 's/cd thrift/cd thrift \&\& git checkout 0.10.0/' deployment_scripts/install_quagga.sh diff --git a/repositories/centos/.gitkeep b/repositories/centos/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/repositories/ubuntu/.gitkeep b/repositories/ubuntu/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/tasks.yaml b/tasks.yaml deleted file mode 100644 index fe51488..0000000 --- a/tasks.yaml +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/volumes.yaml b/volumes.yaml deleted file mode 100644 index 7d9133d..0000000 --- a/volumes.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# Set here new volumes for your role -volumes: [] -volumes_roles_mapping: - opendaylight: - # Default role mapping - - {allocate_size: "min", id: "os"}