merged trunkand fixed conflicts and pep error

This commit is contained in:
Vishvananda Ishaya
2011-01-18 18:50:21 -08:00
4 changed files with 22 additions and 82 deletions

View File

@@ -12,6 +12,7 @@ include nova/cloudpipe/bootscript.sh
include nova/cloudpipe/client.ovpn.template include nova/cloudpipe/client.ovpn.template
include nova/compute/fakevirtinstance.xml include nova/compute/fakevirtinstance.xml
include nova/compute/interfaces.template include nova/compute/interfaces.template
include nova/db/sqlalchemy/migrate_repo/migrate.cfg
include nova/virt/interfaces.template include nova/virt/interfaces.template
include nova/virt/libvirt*.xml.template include nova/virt/libvirt*.xml.template
include nova/tests/CA/ include nova/tests/CA/

View File

@@ -62,7 +62,6 @@ import time
import IPy import IPy
# If ../nova/__init__.py exists, add ../ to Python search path, so that # If ../nova/__init__.py exists, add ../ to Python search path, so that
# it will override what happens to be installed in /usr/(local/)lib/python... # it will override what happens to be installed in /usr/(local/)lib/python...
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
@@ -84,9 +83,9 @@ from nova import rpc
from nova import utils from nova import utils
from nova.api.ec2.cloud import ec2_id_to_id from nova.api.ec2.cloud import ec2_id_to_id
from nova.auth import manager from nova.auth import manager
from nova import rpc
from nova.cloudpipe import pipelib from nova.cloudpipe import pipelib
from nova.api.ec2 import cloud from nova.db import migration
logging.basicConfig() logging.basicConfig()
FLAGS = flags.FLAGS FLAGS = flags.FLAGS
@@ -479,82 +478,6 @@ class NetworkCommands(object):
int(vpn_start), fixed_range_v6) int(vpn_start), fixed_range_v6)
class InstanceCommands(object):
"""Class for mangaging VM instances."""
def live_migration(self, ec2_id, dest):
"""live_migration"""
ctxt = context.get_admin_context()
instance_id = cloud.ec2_id_to_id(ec2_id)
if FLAGS.connection_type != 'libvirt':
msg = _('Only KVM is supported for now. Sorry!')
raise exception.Error(msg)
if FLAGS.volume_driver != 'nova.volume.driver.AOEDriver':
instance_ref = db.instance_get(ctxt, instance_id)
if len(instance_ref['volumes']) != 0:
msg = _(("""Volumes attached by ISCSIDriver"""
""" are not supported. Sorry!"""))
raise exception.Error(msg)
rpc.call(ctxt,
FLAGS.scheduler_topic,
{"method": "live_migration",
"args": {"instance_id": instance_id,
"dest": dest,
"topic": FLAGS.compute_topic}})
msg = 'Migration of %s initiated. ' % ec2_id
msg += 'Check its progress using euca-describe-instances.'
print msg
class HostCommands(object):
"""Class for mangaging host(physical nodes)."""
def list(self):
"""describe host list."""
# To supress msg: No handlers could be found for logger "amqplib"
logging.basicConfig()
service_refs = db.service_get_all(context.get_admin_context())
hosts = [h['host'] for h in service_refs]
hosts = list(set(hosts))
for host in hosts:
print host
def show(self, host):
"""describe cpu/memory/hdd info for host."""
result = rpc.call(context.get_admin_context(),
FLAGS.scheduler_topic,
{"method": "show_host_resource",
"args": {"host": host}})
# Checking result msg format is necessary, that will have done
# when this feture is included in API.
if type(result) != dict:
print 'Unexpected error occurs'
elif not result['ret']:
print '%s' % result['msg']
else:
cpu = result['phy_resource']['vcpus']
mem = result['phy_resource']['memory_mb']
hdd = result['phy_resource']['local_gb']
print 'HOST\t\tPROJECT\t\tcpu\tmem(mb)\tdisk(gb)'
print '%s\t\t\t%s\t%s\t%s' % (host, cpu, mem, hdd)
for p_id, val in result['usage'].items():
print '%s\t%s\t\t%s\t%s\t%s' % (host,
p_id,
val['vcpus'],
val['memory_mb'],
val['local_gb'])
class ServiceCommands(object): class ServiceCommands(object):
"""Enable and disable running services""" """Enable and disable running services"""
@@ -609,6 +532,21 @@ class LogCommands(object):
print re.sub('#012', "\n", "\n".join(lines)) print re.sub('#012', "\n", "\n".join(lines))
class DbCommands(object):
"""Class for managing the database."""
def __init__(self):
pass
def sync(self, version=None):
"""Sync the database up to the most recent version."""
return migration.db_sync(version)
def version(self):
"""Print the current database version."""
print migration.db_version()
class VolumeCommands(object): class VolumeCommands(object):
"""Methods for dealing with a cloud in an odd state""" """Methods for dealing with a cloud in an odd state"""
@@ -648,6 +586,7 @@ class VolumeCommands(object):
"volume_id": volume['id'], "volume_id": volume['id'],
"mountpoint": volume['mountpoint']}}) "mountpoint": volume['mountpoint']}})
CATEGORIES = [ CATEGORIES = [
('user', UserCommands), ('user', UserCommands),
('project', ProjectCommands), ('project', ProjectCommands),
@@ -656,10 +595,9 @@ CATEGORIES = [
('vpn', VpnCommands), ('vpn', VpnCommands),
('floating', FloatingIpCommands), ('floating', FloatingIpCommands),
('network', NetworkCommands), ('network', NetworkCommands),
('instance', InstanceCommands),
('host', HostCommands),
('service', ServiceCommands), ('service', ServiceCommands),
('log', LogCommands), ('log', LogCommands),
('db', DbCommands),
('volume', VolumeCommands)] ('volume', VolumeCommands)]

View File

@@ -40,3 +40,4 @@ FLAGS.blades_per_shelf = 4
FLAGS.iscsi_num_targets = 8 FLAGS.iscsi_num_targets = 8
FLAGS.verbose = True FLAGS.verbose = True
FLAGS.sql_connection = 'sqlite:///nova.sqlite' FLAGS.sql_connection = 'sqlite:///nova.sqlite'
FLAGS.use_ipv6 = True

View File

@@ -17,7 +17,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import gettext
import os import os
import unittest import unittest
import sys import sys