api/ec2/ebs: make metadata returns correct swap and ephemeral0
This commit is contained in:
parent
c890890c7c
commit
d8abe79da8
|
@ -272,6 +272,12 @@ class CloudController(object):
|
|||
mappings = {}
|
||||
mappings['ami'] = block_device.strip_dev(root_device_name)
|
||||
mappings['root'] = root_device_name
|
||||
default_local_device = instance_ref.get('default_local_device')
|
||||
if default_local_device:
|
||||
mappings['ephemeral0'] = default_local_device
|
||||
default_swap_device = instance_ref.get('default_swap_device')
|
||||
if default_swap_device:
|
||||
mappings['swap'] = default_swap_device
|
||||
ebs_devices = []
|
||||
|
||||
# 'ephemeralN', 'swap' and ebs
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
# Copyright 2011 Isaku Yamahata
|
||||
#
|
||||
# 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.
|
||||
|
||||
from sqlalchemy import Column, Integer, MetaData, Table, String
|
||||
|
||||
meta = MetaData()
|
||||
|
||||
default_local_device = Column(
|
||||
'default_local_device',
|
||||
String(length=255, convert_unicode=False, assert_unicode=None,
|
||||
unicode_error=None, _warn_on_bytestring=False),
|
||||
nullable=True)
|
||||
|
||||
default_swap_device = Column(
|
||||
'default_swap_device',
|
||||
String(length=255, convert_unicode=False, assert_unicode=None,
|
||||
unicode_error=None, _warn_on_bytestring=False),
|
||||
nullable=True)
|
||||
|
||||
instances = Table('instances', meta,
|
||||
Column('id', Integer(), primary_key=True, nullable=False),
|
||||
)
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
# Upgrade operations go here. Don't create your own engine;
|
||||
# bind migrate_engine to your metadata
|
||||
meta.bind = migrate_engine
|
||||
instances.create_column(default_local_device)
|
||||
instances.create_column(default_swap_device)
|
||||
|
||||
|
||||
def downgrade(migrate_engine):
|
||||
# Operations to reverse the above upgrade go here.
|
||||
meta.bind = migrate_engine
|
||||
instances.drop_column('default_swap_device')
|
||||
instances.drop_column('default_local_device')
|
|
@ -232,6 +232,8 @@ class Instance(BASE, NovaBase):
|
|||
uuid = Column(String(36))
|
||||
|
||||
root_device_name = Column(String(255))
|
||||
default_local_device = Column(String(255), nullable=True)
|
||||
default_swap_device = Column(String(255), nullable=True)
|
||||
config_drive = Column(String(255))
|
||||
|
||||
# User editable field meant to represent what ip should be used
|
||||
|
|
|
@ -1111,6 +1111,11 @@ class LibvirtConnection(driver.ComputeDriver):
|
|||
nova_context.get_admin_context(), instance['id'],
|
||||
{'root_device_name': '/dev/' + self.default_root_device})
|
||||
|
||||
if local_device:
|
||||
db.instance_update(
|
||||
nova_context.get_admin_context(), instance['id'],
|
||||
{'default_local_device': '/dev/' + self.default_local_device})
|
||||
|
||||
swap = driver.block_device_info_get_swap(block_device_info)
|
||||
if driver.swap_is_usable(swap):
|
||||
xml_info['swap_device'] = block_device.strip_dev(
|
||||
|
@ -1119,6 +1124,9 @@ class LibvirtConnection(driver.ComputeDriver):
|
|||
not self._volume_in_mapping(self.default_swap_device,
|
||||
block_device_info)):
|
||||
xml_info['swap_device'] = self.default_swap_device
|
||||
db.instance_update(
|
||||
nova_context.get_admin_context(), instance['id'],
|
||||
{'default_swap_device': '/dev/' + self.default_swap_device})
|
||||
|
||||
config_drive = False
|
||||
if instance.get('config_drive') or instance.get('config_drive_id'):
|
||||
|
|
Loading…
Reference in New Issue