From 7bbc0196f9acdd597b06bbc3d06cde1354e283f9 Mon Sep 17 00:00:00 2001 From: Alessandro Pilotti Date: Sun, 6 Jan 2013 17:27:07 +0200 Subject: [PATCH] Adds support for deploying Quantum on Windows Some changes in setup.py are required to properly handle dependencies and data files on WIndows (including Hyper-V server). A console script called "quantum-hyperv-agent" has also been added to start the Hyper-V agent Change-Id: Ifac2d33afabac242d9dab87b0bc1764421efc16f --- bin/quantum-hyperv-agent | 26 +++++++ setup.py | 157 ++++++++++++++++++++++----------------- 2 files changed, 116 insertions(+), 67 deletions(-) create mode 100644 bin/quantum-hyperv-agent diff --git a/bin/quantum-hyperv-agent b/bin/quantum-hyperv-agent new file mode 100644 index 0000000000..42e9c558ce --- /dev/null +++ b/bin/quantum-hyperv-agent @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2013 Cloudbase Solutions SRL +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import os +import sys +sys.path.insert(0, os.getcwd()) + +from quantum.plugins.hyperv.agent.hyperv_quantum_agent import main + + +main() diff --git a/setup.py b/setup.py index 56d2452bbd..f2fc892451 100644 --- a/setup.py +++ b/setup.py @@ -13,6 +13,7 @@ # limitations under the License. import setuptools +import sys from quantum.openstack.common import setup from quantum.version import version_info as version @@ -20,6 +21,11 @@ from quantum.version import version_info as version requires = setup.parse_requirements() depend_links = setup.parse_dependency_links() +if sys.platform == 'win32': + requires.append('pywin32') + requires.append('wmi') + requires.remove('pyudev') + Name = 'quantum' Url = "https://launchpad.net/quantum" Version = version.canonical_version_string(always=True) @@ -35,10 +41,6 @@ EagerResources = [ 'quantum', ] -ProjectScripts = [ - 'bin/quantum-rootwrap', -] - config_path = 'etc/quantum/' init_path = 'etc/init.d' rootwrap_path = 'etc/quantum/rootwrap.d' @@ -50,45 +52,90 @@ nvp_plugin_config_path = 'etc/quantum/plugins/nicira' ryu_plugin_config_path = 'etc/quantum/plugins/ryu' meta_plugin_config_path = 'etc/quantum/plugins/metaplugin' nec_plugin_config_path = 'etc/quantum/plugins/nec' +hyperv_plugin_config_path = 'etc/quantum/plugins/hyperv' + +if sys.platform == 'win32': + # Windows doesn't have an "/etc" directory equivalent + DataFiles = [] + + ConsoleScripts = [ + 'quantum-hyperv-agent = ' + 'quantum.plugins.hyperv.agent.hyperv_quantum_agent:main', + 'quantum-server = quantum.server:main', + 'quantum-db-manage = quantum.db.migration.cli:main', + ] + + ProjectScripts = [] +else: + DataFiles = [ + (config_path, + ['etc/quantum.conf', + 'etc/rootwrap.conf', + 'etc/api-paste.ini', + 'etc/policy.json', + 'etc/dhcp_agent.ini', + 'etc/l3_agent.ini', + 'etc/metadata_agent.ini']), + (rootwrap_path, + ['etc/quantum/rootwrap.d/dhcp.filters', + 'etc/quantum/rootwrap.d/iptables-firewall.filters', + 'etc/quantum/rootwrap.d/l3.filters', + 'etc/quantum/rootwrap.d/linuxbridge-plugin.filters', + 'etc/quantum/rootwrap.d/nec-plugin.filters', + 'etc/quantum/rootwrap.d/openvswitch-plugin.filters', + 'etc/quantum/rootwrap.d/ryu-plugin.filters']), + (init_path, ['etc/init.d/quantum-server']), + (ovs_plugin_config_path, + ['etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini']), + (cisco_plugin_config_path, + ['etc/quantum/plugins/cisco/credentials.ini', + 'etc/quantum/plugins/cisco/l2network_plugin.ini', + 'etc/quantum/plugins/cisco/nexus.ini', + 'etc/quantum/plugins/cisco/ucs.ini', + 'etc/quantum/plugins/cisco/cisco_plugins.ini', + 'etc/quantum/plugins/cisco/db_conn.ini']), + (bigswitch_plugin_config_path, + ['etc/quantum/plugins/bigswitch/restproxy.ini']), + (linuxbridge_plugin_config_path, + ['etc/quantum/plugins/linuxbridge/linuxbridge_conf.ini']), + (nvp_plugin_config_path, + ['etc/quantum/plugins/nicira/nvp.ini']), + (ryu_plugin_config_path, ['etc/quantum/plugins/ryu/ryu.ini']), + (meta_plugin_config_path, + ['etc/quantum/plugins/metaplugin/metaplugin.ini']), + (nec_plugin_config_path, ['etc/quantum/plugins/nec/nec.ini']), + (hyperv_plugin_config_path, + ['etc/quantum/plugins/hyperv/hyperv_quantum_plugin.ini']), + ] + + ConsoleScripts = [ + 'quantum-dhcp-agent = quantum.agent.dhcp_agent:main', + 'quantum-dhcp-agent-dnsmasq-lease-update =' + 'quantum.agent.linux.dhcp:Dnsmasq.lease_update', + 'quantum-netns-cleanup = quantum.agent.netns_cleanup_util:main', + 'quantum-l3-agent = quantum.agent.l3_agent:main', + 'quantum-linuxbridge-agent =' + 'quantum.plugins.linuxbridge.agent.linuxbridge_quantum_agent:main', + 'quantum-metadata-agent =' + 'quantum.agent.metadata.agent:main', + 'quantum-ns-metadata-proxy =' + 'quantum.agent.metadata.namespace_proxy:main', + 'quantum-openvswitch-agent =' + 'quantum.plugins.openvswitch.agent.ovs_quantum_agent:main', + 'quantum-ryu-agent = ' + 'quantum.plugins.ryu.agent.ryu_quantum_agent:main', + 'quantum-nec-agent = ' + 'quantum.plugins.nec.agent.nec_quantum_agent:main', + 'quantum-server = quantum.server:main', + 'quantum-debug = quantum.debug.shell:main', + 'quantum-ovs-cleanup = quantum.agent.ovs_cleanup_util:main', + 'quantum-db-manage = quantum.db.migration.cli:main', + ] + + ProjectScripts = [ + 'bin/quantum-rootwrap', + ] -DataFiles = [ - (config_path, - ['etc/quantum.conf', - 'etc/rootwrap.conf', - 'etc/api-paste.ini', - 'etc/policy.json', - 'etc/dhcp_agent.ini', - 'etc/l3_agent.ini', - 'etc/metadata_agent.ini']), - (rootwrap_path, - ['etc/quantum/rootwrap.d/dhcp.filters', - 'etc/quantum/rootwrap.d/iptables-firewall.filters', - 'etc/quantum/rootwrap.d/l3.filters', - 'etc/quantum/rootwrap.d/linuxbridge-plugin.filters', - 'etc/quantum/rootwrap.d/nec-plugin.filters', - 'etc/quantum/rootwrap.d/openvswitch-plugin.filters', - 'etc/quantum/rootwrap.d/ryu-plugin.filters']), - (init_path, ['etc/init.d/quantum-server']), - (ovs_plugin_config_path, - ['etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini']), - (cisco_plugin_config_path, - ['etc/quantum/plugins/cisco/credentials.ini', - 'etc/quantum/plugins/cisco/l2network_plugin.ini', - 'etc/quantum/plugins/cisco/nexus.ini', - 'etc/quantum/plugins/cisco/ucs.ini', - 'etc/quantum/plugins/cisco/cisco_plugins.ini', - 'etc/quantum/plugins/cisco/db_conn.ini']), - (bigswitch_plugin_config_path, - ['etc/quantum/plugins/bigswitch/restproxy.ini']), - (linuxbridge_plugin_config_path, - ['etc/quantum/plugins/linuxbridge/linuxbridge_conf.ini']), - (nvp_plugin_config_path, - ['etc/quantum/plugins/nicira/nvp.ini']), - (ryu_plugin_config_path, ['etc/quantum/plugins/ryu/ryu.ini']), - (meta_plugin_config_path, - ['etc/quantum/plugins/metaplugin/metaplugin.ini']), - (nec_plugin_config_path, ['etc/quantum/plugins/nec/nec.ini']), -] setuptools.setup( name=Name, @@ -118,29 +165,5 @@ setuptools.setup( cmdclass=setup.get_cmdclass(), data_files=DataFiles, eager_resources=EagerResources, - entry_points={ - 'console_scripts': [ - 'quantum-dhcp-agent = quantum.agent.dhcp_agent:main', - 'quantum-dhcp-agent-dnsmasq-lease-update =' - 'quantum.agent.linux.dhcp:Dnsmasq.lease_update', - 'quantum-netns-cleanup = quantum.agent.netns_cleanup_util:main', - 'quantum-l3-agent = quantum.agent.l3_agent:main', - 'quantum-linuxbridge-agent =' - 'quantum.plugins.linuxbridge.agent.linuxbridge_quantum_agent:main', - 'quantum-metadata-agent =' - 'quantum.agent.metadata.agent:main', - 'quantum-ns-metadata-proxy =' - 'quantum.agent.metadata.namespace_proxy:main', - 'quantum-openvswitch-agent =' - 'quantum.plugins.openvswitch.agent.ovs_quantum_agent:main', - 'quantum-ryu-agent = ' - 'quantum.plugins.ryu.agent.ryu_quantum_agent:main', - 'quantum-nec-agent = ' - 'quantum.plugins.nec.agent.nec_quantum_agent:main', - 'quantum-server = quantum.server:main', - 'quantum-debug = quantum.debug.shell:main', - 'quantum-ovs-cleanup = quantum.agent.ovs_cleanup_util:main', - 'quantum-db-manage = quantum.db.migration.cli:main', - ] - }, + entry_points={'console_scripts': ConsoleScripts}, )