more fixes from code review

This commit is contained in:
Vishvananda Ishaya
2010-09-07 20:55:42 -07:00
parent 993e5121a5
commit 7f396cbd97
3 changed files with 41 additions and 45 deletions

View File

@@ -53,7 +53,6 @@ def project_dict(project):
def host_dict(host):
"""Convert a host model object to a result dict"""
if host:
# FIXME(vish)
return host.state
else:
return {}
@@ -195,6 +194,8 @@ class AdminController(object):
raise exception.ApiError('operation must be add or remove')
return True
# FIXME(vish): these host commands don't work yet, perhaps some of the
# required data can be retrieved from service objects?
@admin_only
def describe_hosts(self, _context, **_kwargs):
"""Returns status info for all nodes. Includes:

View File

@@ -78,7 +78,7 @@ class CloudController(object):
if not os.path.exists(root_ca_path):
start = os.getcwd()
os.chdir(FLAGS.ca_path)
# TODO: Do this with M2Crypto instead
# TODO(vish): Do this with M2Crypto instead
utils.runthis("Generating root CA: %s", "sh genrootca.sh")
os.chdir(start)
@@ -93,28 +93,30 @@ class CloudController(object):
result[instance['key_name']] = [line]
return result
def get_metadata(self, ipaddress):
i = db.fixed_ip_get_instance(ipaddress)
if i is None:
def get_metadata(self, address):
instance_ref = db.fixed_ip_get_instance(None, address)
if instance_ref is None:
return None
mpi = self._get_mpi_data(i['project_id'])
if i['key_name']:
mpi = self._get_mpi_data(instance_ref['project_id'])
if instance_ref['key_name']:
keys = {
'0': {
'_name': i['key_name'],
'openssh-key': i['key_data']
'_name': instance_ref['key_name'],
'openssh-key': instance_ref['key_data']
}
}
else:
keys = ''
hostname = i['hostname']
hostname = instance_ref['hostname']
floating_ip = db.instance_get_floating_ip_address(None,
instance_ref['id'])
data = {
'user-data': base64.b64decode(i['user_data']),
'user-data': base64.b64decode(instance_ref['user_data']),
'meta-data': {
'ami-id': i['image_id'],
'ami-launch-index': i['ami_launch_index'],
'ami-manifest-path': 'FIXME', # image property
'block-device-mapping': { # TODO: replace with real data
'ami-id': instance_ref['image_id'],
'ami-launch-index': instance_ref['ami_launch_index'],
'ami-manifest-path': 'FIXME',
'block-device-mapping': { # TODO(vish): replace with real data
'ami': 'sda1',
'ephemeral0': 'sda2',
'root': '/dev/sda1',
@@ -122,27 +124,27 @@ class CloudController(object):
},
'hostname': hostname,
'instance-action': 'none',
'instance-id': i['instance_id'],
'instance-type': i.get('instance_type', ''),
'instance-id': instance_ref['str_id'],
'instance-type': instance_ref['instance_type'],
'local-hostname': hostname,
'local-ipv4': i['private_dns_name'], # TODO: switch to IP
'kernel-id': i.get('kernel_id', ''),
'local-ipv4': address,
'kernel-id': instance_ref['kernel_id'],
'placement': {
'availaibility-zone': i.get('availability_zone', 'nova'),
'availaibility-zone': instance_ref['availability_zone'],
},
'public-hostname': hostname,
'public-ipv4': i.get('dns_name', ''), # TODO: switch to IP
'public-ipv4': floating_ip or '',
'public-keys': keys,
'ramdisk-id': i.get('ramdisk_id', ''),
'reservation-id': i['reservation_id'],
'security-groups': i.get('groups', ''),
'ramdisk-id': instance_ref['ramdisk_id'],
'reservation-id': instance_ref['reservation_id'],
'security-groups': '',
'mpi': mpi
}
}
if False: # TODO: store ancestor ids
if False: # TODO(vish): store ancestor ids
data['ancestor-ami-ids'] = []
if i.get('product_codes', None):
data['product-codes'] = i['product_codes']
if False: # TODO(vish): store product codes
data['product-codes'] = []
return data
@rbac.allow('all')
@@ -253,7 +255,7 @@ class CloudController(object):
v['status'] = volume['status']
v['size'] = volume['size']
v['availabilityZone'] = volume['availability_zone']
# v['createTime'] = volume['create_time']
v['createTime'] = volume['created_at']
if context.user.is_admin():
v['status'] = '%s (%s, %s, %s, %s)' % (
volume['status'],
@@ -296,7 +298,6 @@ class CloudController(object):
# TODO(vish): abstract status checking?
if volume_ref['attach_status'] == "attached":
raise exception.ApiError("Volume is already attached")
#volume.start_attach(instance_id, device)
instance_ref = db.instance_get_by_str(context, instance_id)
host = db.instance_get_host(context, instance_ref['id'])
rpc.cast(db.queue_get_for(context, FLAGS.compute_topic, host),
@@ -322,7 +323,6 @@ class CloudController(object):
if volume_ref['status'] == "available":
raise exception.Error("Volume is already detached")
try:
#volume.start_detach()
host = db.instance_get_host(context, instance_ref['id'])
rpc.cast(db.queue_get_for(context, FLAGS.compute_topic, host),
{"method": "detach_volume",
@@ -422,15 +422,12 @@ class CloudController(object):
for floating_ip_ref in iterator:
address = floating_ip_ref['id_str']
instance_ref = db.floating_ip_get_instance(address)
address_rv = {
'public_ip': address,
'instance_id': instance_ref['id_str']
}
address_rv = {'public_ip': address,
'instance_id': instance_ref['id_str']}
if context.user.is_admin():
address_rv['instance_id'] = "%s (%s)" % (
address_rv['instance_id'],
floating_ip_ref['project_id'],
)
details = "%s (%s)" % (address_rv['instance_id'],
floating_ip_ref['project_id'])
address_rv['instance_id'] = details
addresses.append(address_rv)
return {'addressesSet': addresses}
@@ -579,7 +576,6 @@ class CloudController(object):
@defer.inlineCallbacks
def terminate_instances(self, context, instance_id, **kwargs):
logging.debug("Going to start terminating instances")
# network_topic = yield self._get_network_topic(context)
for id_str in instance_id:
logging.debug("Going to try and terminate %s" % id_str)
try:

View File

@@ -203,12 +203,6 @@ DEFINE_string('vpn_key_suffix',
DEFINE_integer('auth_token_ttl', 3600, 'Seconds for auth tokens to linger')
# UNUSED
DEFINE_string('node_availability_zone', 'nova',
'availability zone of this node')
DEFINE_string('host', socket.gethostname(),
'name of this node')
DEFINE_string('sql_connection',
'sqlite:///%s/nova.sqlite' % os.path.abspath("./"),
'connection string for sql database')
@@ -220,4 +214,9 @@ DEFINE_string('network_manager', 'nova.network.manager.VlanManager',
DEFINE_string('volume_manager', 'nova.volume.manager.AOEManager',
'Manager for volume')
DEFINE_string('host', socket.gethostname(),
'name of this node')
# UNUSED
DEFINE_string('node_availability_zone', 'nova',
'availability zone of this node')