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
This commit is contained in:
Alessandro Pilotti 2013-01-06 17:27:07 +02:00
parent 2d9e479eb3
commit ba12d3eb93
2 changed files with 116 additions and 67 deletions

26
bin/quantum-hyperv-agent Normal file
View File

@ -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()

157
setup.py
View File

@ -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},
)