fix new N402 errors
fix the N402 errors that have slipped in in the last 48 hrs since starting this patch series. fix an N401 error that our scanner current can't find because it only looks for doc strings on classes and defs. this is the xeno's paradox of patch series, but we're getting close. Change-Id: I4a763bb4c812335d853eae05c72464f18ab93297
This commit is contained in:
parent
8143021bdb
commit
5fca1d9e97
@ -56,7 +56,7 @@ QUEUE = Queue.Queue()
|
|||||||
# They are split for stub-out.
|
# They are split for stub-out.
|
||||||
|
|
||||||
def discovery(portal_address, portal_port):
|
def discovery(portal_address, portal_port):
|
||||||
"""Do iSCSI discovery on portal"""
|
"""Do iSCSI discovery on portal."""
|
||||||
utils.execute('iscsiadm',
|
utils.execute('iscsiadm',
|
||||||
'-m', 'discovery',
|
'-m', 'discovery',
|
||||||
'-t', 'st',
|
'-t', 'st',
|
||||||
@ -66,7 +66,7 @@ def discovery(portal_address, portal_port):
|
|||||||
|
|
||||||
|
|
||||||
def login_iscsi(portal_address, portal_port, target_iqn):
|
def login_iscsi(portal_address, portal_port, target_iqn):
|
||||||
"""Login to an iSCSI target"""
|
"""Login to an iSCSI target."""
|
||||||
utils.execute('iscsiadm',
|
utils.execute('iscsiadm',
|
||||||
'-m', 'node',
|
'-m', 'node',
|
||||||
'-p', '%s:%s' % (portal_address, portal_port),
|
'-p', '%s:%s' % (portal_address, portal_port),
|
||||||
@ -79,7 +79,7 @@ def login_iscsi(portal_address, portal_port, target_iqn):
|
|||||||
|
|
||||||
|
|
||||||
def logout_iscsi(portal_address, portal_port, target_iqn):
|
def logout_iscsi(portal_address, portal_port, target_iqn):
|
||||||
"""Logout from an iSCSI target"""
|
"""Logout from an iSCSI target."""
|
||||||
utils.execute('iscsiadm',
|
utils.execute('iscsiadm',
|
||||||
'-m', 'node',
|
'-m', 'node',
|
||||||
'-p', '%s:%s' % (portal_address, portal_port),
|
'-p', '%s:%s' % (portal_address, portal_port),
|
||||||
@ -90,7 +90,7 @@ def logout_iscsi(portal_address, portal_port, target_iqn):
|
|||||||
|
|
||||||
|
|
||||||
def make_partitions(dev, root_mb, swap_mb):
|
def make_partitions(dev, root_mb, swap_mb):
|
||||||
"""Create partitions for root and swap on a disk device"""
|
"""Create partitions for root and swap on a disk device."""
|
||||||
commands = ['o,w',
|
commands = ['o,w',
|
||||||
'n,p,1,,+%dM,t,1,83,w' % root_mb,
|
'n,p,1,,+%dM,t,1,83,w' % root_mb,
|
||||||
'n,p,2,,+%dM,t,2,82,w' % swap_mb,
|
'n,p,2,,+%dM,t,2,82,w' % swap_mb,
|
||||||
@ -106,13 +106,13 @@ def make_partitions(dev, root_mb, swap_mb):
|
|||||||
|
|
||||||
|
|
||||||
def is_block_device(dev):
|
def is_block_device(dev):
|
||||||
"""Check whether a device is block or not"""
|
"""Check whether a device is block or not."""
|
||||||
s = os.stat(dev)
|
s = os.stat(dev)
|
||||||
return stat.S_ISBLK(s.st_mode)
|
return stat.S_ISBLK(s.st_mode)
|
||||||
|
|
||||||
|
|
||||||
def dd(src, dst):
|
def dd(src, dst):
|
||||||
"""Execute dd from src to dst"""
|
"""Execute dd from src to dst."""
|
||||||
utils.execute('dd',
|
utils.execute('dd',
|
||||||
'if=%s' % src,
|
'if=%s' % src,
|
||||||
'of=%s' % dst,
|
'of=%s' % dst,
|
||||||
@ -122,7 +122,7 @@ def dd(src, dst):
|
|||||||
|
|
||||||
|
|
||||||
def mkswap(dev, label='swap1'):
|
def mkswap(dev, label='swap1'):
|
||||||
"""Execute mkswap on a device"""
|
"""Execute mkswap on a device."""
|
||||||
utils.execute('mkswap',
|
utils.execute('mkswap',
|
||||||
'-L', label,
|
'-L', label,
|
||||||
dev,
|
dev,
|
||||||
@ -131,7 +131,7 @@ def mkswap(dev, label='swap1'):
|
|||||||
|
|
||||||
|
|
||||||
def block_uuid(dev):
|
def block_uuid(dev):
|
||||||
"""Get UUID of a block device"""
|
"""Get UUID of a block device."""
|
||||||
out, _ = utils.execute('blkid', '-s', 'UUID', '-o', 'value', dev,
|
out, _ = utils.execute('blkid', '-s', 'UUID', '-o', 'value', dev,
|
||||||
run_as_root=True,
|
run_as_root=True,
|
||||||
check_exit_code=[0])
|
check_exit_code=[0])
|
||||||
@ -219,7 +219,7 @@ def deploy(address, port, iqn, lun, image_path, pxe_config_path,
|
|||||||
|
|
||||||
|
|
||||||
class Worker(threading.Thread):
|
class Worker(threading.Thread):
|
||||||
"""Thread that handles requests in queue"""
|
"""Thread that handles requests in queue."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(Worker, self).__init__()
|
super(Worker, self).__init__()
|
||||||
@ -250,7 +250,7 @@ class Worker(threading.Thread):
|
|||||||
|
|
||||||
|
|
||||||
class BareMetalDeploy(object):
|
class BareMetalDeploy(object):
|
||||||
"""WSGI server for bare-metal deployment"""
|
"""WSGI server for bare-metal deployment."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.worker = Worker()
|
self.worker = Worker()
|
||||||
|
@ -298,7 +298,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"alias": "os-admin-networks",
|
"alias": "os-admin-networks",
|
||||||
"description": "Admin-only Network Management Extension",
|
"description": "Admin-only Network Management Extension.",
|
||||||
"links": [],
|
"links": [],
|
||||||
"name": "AdminNetworks",
|
"name": "AdminNetworks",
|
||||||
"namespace": "http://docs.openstack.org/compute/ext/os-admin-networks/api/v1.1",
|
"namespace": "http://docs.openstack.org/compute/ext/os-admin-networks/api/v1.1",
|
||||||
@ -306,7 +306,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"alias": "os-networks",
|
"alias": "os-networks",
|
||||||
"description": "Tenant-based Network Management Extension",
|
"description": "Tenant-based Network Management Extension.",
|
||||||
"links": [],
|
"links": [],
|
||||||
"name": "OSNetworks",
|
"name": "OSNetworks",
|
||||||
"namespace": "http://docs.openstack.org/compute/ext/os-networks/api/v1.1",
|
"namespace": "http://docs.openstack.org/compute/ext/os-networks/api/v1.1",
|
||||||
|
@ -126,13 +126,13 @@
|
|||||||
<description>Allow multiple create in the Create Server v1.1 API.</description>
|
<description>Allow multiple create in the Create Server v1.1 API.</description>
|
||||||
</extension>
|
</extension>
|
||||||
<extension alias="os-admin-networks" updated="2011-12-23T00:00:00+00:00" namespace="http://docs.openstack.org/compute/ext/os-admin-networks/api/v1.1" name="AdminNetworks">
|
<extension alias="os-admin-networks" updated="2011-12-23T00:00:00+00:00" namespace="http://docs.openstack.org/compute/ext/os-admin-networks/api/v1.1" name="AdminNetworks">
|
||||||
<description>Admin-only Network Management Extension</description>
|
<description>Admin-only Network Management Extension.</description>
|
||||||
</extension>
|
</extension>
|
||||||
<extension alias="os-networks-associate" updated="2012-11-19T00:00:00+00:00" namespace="http://docs.openstack.org/compute/ext/networks_associate/api/v2" name="NetworkAssociationSupport">
|
<extension alias="os-networks-associate" updated="2012-11-19T00:00:00+00:00" namespace="http://docs.openstack.org/compute/ext/networks_associate/api/v2" name="NetworkAssociationSupport">
|
||||||
<description>Network association support.</description>
|
<description>Network association support.</description>
|
||||||
</extension>
|
</extension>
|
||||||
<extension alias="os-networks" updated="2011-12-23T00:00:00+00:00" namespace="http://docs.openstack.org/compute/ext/os-networks/api/v1.1" name="OSNetworks">
|
<extension alias="os-networks" updated="2011-12-23T00:00:00+00:00" namespace="http://docs.openstack.org/compute/ext/os-networks/api/v1.1" name="OSNetworks">
|
||||||
<description>Tenant-based Network Management Extension</description>
|
<description>Tenant-based Network Management Extension.</description>
|
||||||
</extension>
|
</extension>
|
||||||
<extension alias="os-quota-class-sets" updated="2012-03-12T00:00:00+00:00" namespace="http://docs.openstack.org/compute/ext/quota-classes-sets/api/v1.1" name="QuotaClasses">
|
<extension alias="os-quota-class-sets" updated="2012-03-12T00:00:00+00:00" namespace="http://docs.openstack.org/compute/ext/quota-classes-sets/api/v1.1" name="QuotaClasses">
|
||||||
<description>Quota classes management support.</description>
|
<description>Quota classes management support.</description>
|
||||||
|
@ -151,7 +151,7 @@ class AdminNetworkController(wsgi.Controller):
|
|||||||
|
|
||||||
|
|
||||||
class Admin_networks(extensions.ExtensionDescriptor):
|
class Admin_networks(extensions.ExtensionDescriptor):
|
||||||
"""Admin-only Network Management Extension"""
|
"""Admin-only Network Management Extension."""
|
||||||
|
|
||||||
name = "AdminNetworks"
|
name = "AdminNetworks"
|
||||||
alias = "os-admin-networks"
|
alias = "os-admin-networks"
|
||||||
|
@ -187,7 +187,7 @@ class NetworkController(object):
|
|||||||
|
|
||||||
|
|
||||||
class Os_networks(extensions.ExtensionDescriptor):
|
class Os_networks(extensions.ExtensionDescriptor):
|
||||||
"""Tenant-based Network Management Extension"""
|
"""Tenant-based Network Management Extension."""
|
||||||
|
|
||||||
name = "OSNetworks"
|
name = "OSNetworks"
|
||||||
alias = "os-networks"
|
alias = "os-networks"
|
||||||
|
@ -66,7 +66,7 @@ class ServerPasswordController(object):
|
|||||||
|
|
||||||
|
|
||||||
class Server_password(extensions.ExtensionDescriptor):
|
class Server_password(extensions.ExtensionDescriptor):
|
||||||
"""Server password support"""
|
"""Server password support."""
|
||||||
|
|
||||||
name = "ServerPassword"
|
name = "ServerPassword"
|
||||||
alias = "os-server-password"
|
alias = "os-server-password"
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
""" utilities for multiple APIs"""
|
"""utilities for multiple APIs."""
|
||||||
|
|
||||||
from nova import db
|
from nova import db
|
||||||
from nova.openstack.common import cfg
|
from nova.openstack.common import cfg
|
||||||
|
@ -1622,32 +1622,32 @@ def instance_fault_get_by_instance_uuids(context, instance_uuids):
|
|||||||
|
|
||||||
|
|
||||||
def action_start(context, values):
|
def action_start(context, values):
|
||||||
"""Start an action for an instance"""
|
"""Start an action for an instance."""
|
||||||
return IMPL.action_start(context, values)
|
return IMPL.action_start(context, values)
|
||||||
|
|
||||||
|
|
||||||
def action_finish(context, values):
|
def action_finish(context, values):
|
||||||
"""Finish an action for an instance"""
|
"""Finish an action for an instance."""
|
||||||
return IMPL.action_finish(context, values)
|
return IMPL.action_finish(context, values)
|
||||||
|
|
||||||
|
|
||||||
def actions_get(context, uuid):
|
def actions_get(context, uuid):
|
||||||
"""Get all instance actions for the provided instance"""
|
"""Get all instance actions for the provided instance."""
|
||||||
return IMPL.actions_get(context, uuid)
|
return IMPL.actions_get(context, uuid)
|
||||||
|
|
||||||
|
|
||||||
def action_get_by_id(context, uuid, action_id):
|
def action_get_by_id(context, uuid, action_id):
|
||||||
"""Get the action by id and given instance"""
|
"""Get the action by id and given instance."""
|
||||||
return IMPL.action_get_by_id(context, uuid, action_id)
|
return IMPL.action_get_by_id(context, uuid, action_id)
|
||||||
|
|
||||||
|
|
||||||
def action_event_start(context, values):
|
def action_event_start(context, values):
|
||||||
"""Start an event on an instance action"""
|
"""Start an event on an instance action."""
|
||||||
return IMPL.action_event_start(context, values)
|
return IMPL.action_event_start(context, values)
|
||||||
|
|
||||||
|
|
||||||
def action_event_finish(context, values):
|
def action_event_finish(context, values):
|
||||||
"""Finish an event on an instance action"""
|
"""Finish an event on an instance action."""
|
||||||
return IMPL.action_event_finish(context, values)
|
return IMPL.action_event_finish(context, values)
|
||||||
|
|
||||||
|
|
||||||
|
@ -4595,7 +4595,7 @@ def actions_get(context, instance_uuid):
|
|||||||
|
|
||||||
|
|
||||||
def action_get_by_id(context, instance_uuid, action_id):
|
def action_get_by_id(context, instance_uuid, action_id):
|
||||||
"""Get the action by id and given instance"""
|
"""Get the action by id and given instance."""
|
||||||
action = model_query(context, models.InstanceAction).\
|
action = model_query(context, models.InstanceAction).\
|
||||||
filter_by(instance_uuid=instance_uuid).\
|
filter_by(instance_uuid=instance_uuid).\
|
||||||
filter_by(id=action_id).\
|
filter_by(id=action_id).\
|
||||||
@ -4614,7 +4614,7 @@ def _action_get_by_request_id(context, instance_uuid, request_id,
|
|||||||
|
|
||||||
|
|
||||||
def action_event_start(context, values):
|
def action_event_start(context, values):
|
||||||
"""Start an event on an instance action"""
|
"""Start an event on an instance action."""
|
||||||
session = get_session()
|
session = get_session()
|
||||||
with session.begin():
|
with session.begin():
|
||||||
action = _action_get_by_request_id(context, values['instance_uuid'],
|
action = _action_get_by_request_id(context, values['instance_uuid'],
|
||||||
@ -4634,7 +4634,7 @@ def action_event_start(context, values):
|
|||||||
|
|
||||||
|
|
||||||
def action_event_finish(context, values):
|
def action_event_finish(context, values):
|
||||||
"""Finish an event on an instance action"""
|
"""Finish an event on an instance action."""
|
||||||
session = get_session()
|
session = get_session()
|
||||||
with session.begin():
|
with session.begin():
|
||||||
action = _action_get_by_request_id(context, values['instance_uuid'],
|
action = _action_get_by_request_id(context, values['instance_uuid'],
|
||||||
|
@ -985,7 +985,7 @@ class InstanceFault(BASE, NovaBase):
|
|||||||
|
|
||||||
|
|
||||||
class InstanceAction(BASE, NovaBase):
|
class InstanceAction(BASE, NovaBase):
|
||||||
"""Track client actions on an instance"""
|
"""Track client actions on an instance."""
|
||||||
__tablename__ = 'instance_actions'
|
__tablename__ = 'instance_actions'
|
||||||
id = Column(Integer, primary_key=True, nullable=False, autoincrement=True)
|
id = Column(Integer, primary_key=True, nullable=False, autoincrement=True)
|
||||||
action = Column(String(255))
|
action = Column(String(255))
|
||||||
@ -1001,7 +1001,7 @@ class InstanceAction(BASE, NovaBase):
|
|||||||
|
|
||||||
|
|
||||||
class InstanceActionEvent(BASE, NovaBase):
|
class InstanceActionEvent(BASE, NovaBase):
|
||||||
"""Track events that occur during an InstanceAction"""
|
"""Track events that occur during an InstanceAction."""
|
||||||
__tablename__ = 'instance_actions_events'
|
__tablename__ = 'instance_actions_events'
|
||||||
id = Column(Integer, primary_key=True, nullable=False, autoincrement=True)
|
id = Column(Integer, primary_key=True, nullable=False, autoincrement=True)
|
||||||
event = Column(String(255))
|
event = Column(String(255))
|
||||||
|
@ -3475,7 +3475,7 @@ class ComputeTestCase(BaseTestCase):
|
|||||||
db.instance_destroy(c, inst_uuid)
|
db.instance_destroy(c, inst_uuid)
|
||||||
|
|
||||||
def test_rebuild_on_host_instance_exists(self):
|
def test_rebuild_on_host_instance_exists(self):
|
||||||
"""Rebuild if instance exists raise an exception"""
|
"""Rebuild if instance exists raise an exception."""
|
||||||
|
|
||||||
# creating testdata
|
# creating testdata
|
||||||
c = self.context.elevated()
|
c = self.context.elevated()
|
||||||
|
@ -540,7 +540,7 @@ class DbApiTestCase(test.TestCase):
|
|||||||
self.assertEqual(expected, instance_faults)
|
self.assertEqual(expected, instance_faults)
|
||||||
|
|
||||||
def test_instance_action_start(self):
|
def test_instance_action_start(self):
|
||||||
"""Create an instance action"""
|
"""Create an instance action."""
|
||||||
ctxt = context.get_admin_context()
|
ctxt = context.get_admin_context()
|
||||||
uuid = str(stdlib_uuid.uuid4())
|
uuid = str(stdlib_uuid.uuid4())
|
||||||
|
|
||||||
@ -563,7 +563,7 @@ class DbApiTestCase(test.TestCase):
|
|||||||
self.assertEqual(ctxt.project_id, actions[0]['project_id'])
|
self.assertEqual(ctxt.project_id, actions[0]['project_id'])
|
||||||
|
|
||||||
def test_instance_action_finish(self):
|
def test_instance_action_finish(self):
|
||||||
"""Create an instance action"""
|
"""Create an instance action."""
|
||||||
ctxt = context.get_admin_context()
|
ctxt = context.get_admin_context()
|
||||||
uuid = str(stdlib_uuid.uuid4())
|
uuid = str(stdlib_uuid.uuid4())
|
||||||
|
|
||||||
@ -593,7 +593,7 @@ class DbApiTestCase(test.TestCase):
|
|||||||
self.assertEqual(ctxt.project_id, actions[0]['project_id'])
|
self.assertEqual(ctxt.project_id, actions[0]['project_id'])
|
||||||
|
|
||||||
def test_instance_actions_get_by_instance(self):
|
def test_instance_actions_get_by_instance(self):
|
||||||
"""Ensure we can get actions by UUID"""
|
"""Ensure we can get actions by UUID."""
|
||||||
ctxt1 = context.get_admin_context()
|
ctxt1 = context.get_admin_context()
|
||||||
ctxt2 = context.get_admin_context()
|
ctxt2 = context.get_admin_context()
|
||||||
uuid1 = str(stdlib_uuid.uuid4())
|
uuid1 = str(stdlib_uuid.uuid4())
|
||||||
@ -625,7 +625,7 @@ class DbApiTestCase(test.TestCase):
|
|||||||
self.assertEqual('run_instance', actions[1]['action'])
|
self.assertEqual('run_instance', actions[1]['action'])
|
||||||
|
|
||||||
def test_instance_action_get_by_instance_and_action(self):
|
def test_instance_action_get_by_instance_and_action(self):
|
||||||
"""Ensure we can get an action by instance UUID and action id"""
|
"""Ensure we can get an action by instance UUID and action id."""
|
||||||
ctxt1 = context.get_admin_context()
|
ctxt1 = context.get_admin_context()
|
||||||
ctxt2 = context.get_admin_context()
|
ctxt2 = context.get_admin_context()
|
||||||
uuid1 = str(stdlib_uuid.uuid4())
|
uuid1 = str(stdlib_uuid.uuid4())
|
||||||
@ -657,7 +657,7 @@ class DbApiTestCase(test.TestCase):
|
|||||||
self.assertEqual(ctxt1.request_id, action['request_id'])
|
self.assertEqual(ctxt1.request_id, action['request_id'])
|
||||||
|
|
||||||
def test_instance_action_event_start(self):
|
def test_instance_action_event_start(self):
|
||||||
"""Create an instance action event"""
|
"""Create an instance action event."""
|
||||||
ctxt = context.get_admin_context()
|
ctxt = context.get_admin_context()
|
||||||
uuid = str(stdlib_uuid.uuid4())
|
uuid = str(stdlib_uuid.uuid4())
|
||||||
|
|
||||||
@ -683,7 +683,7 @@ class DbApiTestCase(test.TestCase):
|
|||||||
self.assertEqual(start_time, events[0]['start_time'])
|
self.assertEqual(start_time, events[0]['start_time'])
|
||||||
|
|
||||||
def test_instance_action_event_finish(self):
|
def test_instance_action_event_finish(self):
|
||||||
"""Finish an instance action event"""
|
"""Finish an instance action event."""
|
||||||
ctxt = context.get_admin_context()
|
ctxt = context.get_admin_context()
|
||||||
uuid = str(stdlib_uuid.uuid4())
|
uuid = str(stdlib_uuid.uuid4())
|
||||||
|
|
||||||
@ -717,7 +717,7 @@ class DbApiTestCase(test.TestCase):
|
|||||||
self.assertEqual(finish_time, events[0]['finish_time'])
|
self.assertEqual(finish_time, events[0]['finish_time'])
|
||||||
|
|
||||||
def test_instance_action_event_get_by_id(self):
|
def test_instance_action_event_get_by_id(self):
|
||||||
"""Get a specific instance action event"""
|
"""Get a specific instance action event."""
|
||||||
ctxt1 = context.get_admin_context()
|
ctxt1 = context.get_admin_context()
|
||||||
ctxt2 = context.get_admin_context()
|
ctxt2 = context.get_admin_context()
|
||||||
uuid1 = str(stdlib_uuid.uuid4())
|
uuid1 = str(stdlib_uuid.uuid4())
|
||||||
|
@ -154,17 +154,17 @@ def get_deploy_ari_id(instance):
|
|||||||
|
|
||||||
|
|
||||||
def get_image_dir_path(instance):
|
def get_image_dir_path(instance):
|
||||||
"""Generate the dir for an instances disk"""
|
"""Generate the dir for an instances disk."""
|
||||||
return os.path.join(CONF.instances_path, instance['name'])
|
return os.path.join(CONF.instances_path, instance['name'])
|
||||||
|
|
||||||
|
|
||||||
def get_image_file_path(instance):
|
def get_image_file_path(instance):
|
||||||
"""Generate the full path for an instances disk"""
|
"""Generate the full path for an instances disk."""
|
||||||
return os.path.join(CONF.instances_path, instance['name'], 'disk')
|
return os.path.join(CONF.instances_path, instance['name'], 'disk')
|
||||||
|
|
||||||
|
|
||||||
def get_pxe_config_file_path(instance):
|
def get_pxe_config_file_path(instance):
|
||||||
"""Generate the path for an instances PXE config file"""
|
"""Generate the path for an instances PXE config file."""
|
||||||
return os.path.join(CONF.baremetal.tftp_root, instance['uuid'], 'config')
|
return os.path.join(CONF.baremetal.tftp_root, instance['uuid'], 'config')
|
||||||
|
|
||||||
|
|
||||||
@ -185,7 +185,7 @@ def get_partition_sizes(instance):
|
|||||||
|
|
||||||
|
|
||||||
def get_pxe_mac_path(mac):
|
def get_pxe_mac_path(mac):
|
||||||
"""Convert a MAC address into a PXE config file name"""
|
"""Convert a MAC address into a PXE config file name."""
|
||||||
return os.path.join(
|
return os.path.join(
|
||||||
CONF.baremetal.tftp_root,
|
CONF.baremetal.tftp_root,
|
||||||
'pxelinux.cfg',
|
'pxelinux.cfg',
|
||||||
@ -232,7 +232,7 @@ def get_tftp_image_info(instance):
|
|||||||
|
|
||||||
|
|
||||||
class PXE(base.NodeDriver):
|
class PXE(base.NodeDriver):
|
||||||
"""PXE bare metal driver"""
|
"""PXE bare metal driver."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(PXE, self).__init__()
|
super(PXE, self).__init__()
|
||||||
@ -352,7 +352,7 @@ class PXE(base.NodeDriver):
|
|||||||
|
|
||||||
def cache_images(self, context, node, instance,
|
def cache_images(self, context, node, instance,
|
||||||
admin_password, image_meta, injected_files, network_info):
|
admin_password, image_meta, injected_files, network_info):
|
||||||
"""Prepare all the images for this instance"""
|
"""Prepare all the images for this instance."""
|
||||||
tftp_image_info = get_tftp_image_info(instance)
|
tftp_image_info = get_tftp_image_info(instance)
|
||||||
self._cache_tftp_images(context, instance, tftp_image_info)
|
self._cache_tftp_images(context, instance, tftp_image_info)
|
||||||
|
|
||||||
@ -361,7 +361,7 @@ class PXE(base.NodeDriver):
|
|||||||
injected_files, admin_password)
|
injected_files, admin_password)
|
||||||
|
|
||||||
def destroy_images(self, context, node, instance):
|
def destroy_images(self, context, node, instance):
|
||||||
"""Delete instance's image file"""
|
"""Delete instance's image file."""
|
||||||
bm_utils.unlink_without_raise(get_image_file_path(instance))
|
bm_utils.unlink_without_raise(get_image_file_path(instance))
|
||||||
bm_utils.unlink_without_raise(get_image_dir_path(instance))
|
bm_utils.unlink_without_raise(get_image_dir_path(instance))
|
||||||
|
|
||||||
@ -420,7 +420,7 @@ class PXE(base.NodeDriver):
|
|||||||
bm_utils.create_link_without_raise(pxe_config_file_path, mac_path)
|
bm_utils.create_link_without_raise(pxe_config_file_path, mac_path)
|
||||||
|
|
||||||
def deactivate_bootloader(self, context, node, instance):
|
def deactivate_bootloader(self, context, node, instance):
|
||||||
"""Delete PXE bootloader images and config"""
|
"""Delete PXE bootloader images and config."""
|
||||||
try:
|
try:
|
||||||
image_info = get_tftp_image_info(instance)
|
image_info = get_tftp_image_info(instance)
|
||||||
except exception.NovaException:
|
except exception.NovaException:
|
||||||
|
@ -22,7 +22,7 @@ import subprocess
|
|||||||
|
|
||||||
|
|
||||||
def execute_get_output(*command):
|
def execute_get_output(*command):
|
||||||
"""Execute and return stdout"""
|
"""Execute and return stdout."""
|
||||||
devnull = open(os.devnull, 'w')
|
devnull = open(os.devnull, 'w')
|
||||||
command = map(str, command)
|
command = map(str, command)
|
||||||
proc = subprocess.Popen(command, close_fds=True,
|
proc = subprocess.Popen(command, close_fds=True,
|
||||||
@ -32,7 +32,7 @@ def execute_get_output(*command):
|
|||||||
|
|
||||||
|
|
||||||
def execute(*command):
|
def execute(*command):
|
||||||
"""Execute without returning stdout"""
|
"""Execute without returning stdout."""
|
||||||
devnull = open(os.devnull, 'w')
|
devnull = open(os.devnull, 'w')
|
||||||
command = map(str, command)
|
command = map(str, command)
|
||||||
proc = subprocess.Popen(command, close_fds=True,
|
proc = subprocess.Popen(command, close_fds=True,
|
||||||
|
@ -38,7 +38,7 @@ pluginlib.configure_logging("xenstore")
|
|||||||
|
|
||||||
|
|
||||||
class XenstoreError(pluginlib.PluginError):
|
class XenstoreError(pluginlib.PluginError):
|
||||||
"""Errors that occur when calling xenstore-* through subprocesses"""
|
"""Errors that occur when calling xenstore-* through subprocesses."""
|
||||||
|
|
||||||
def __init__(self, cmd, return_code, stderr, stdout):
|
def __init__(self, cmd, return_code, stderr, stdout):
|
||||||
msg = "cmd: %s; returncode: %d; stderr: %s; stdout: %s"
|
msg = "cmd: %s; returncode: %d; stderr: %s; stdout: %s"
|
||||||
|
@ -63,7 +63,7 @@ class SmokeTestCase(unittest.TestCase):
|
|||||||
return status == 0
|
return status == 0
|
||||||
|
|
||||||
def wait_for_running(self, instance, tries=60, wait=1):
|
def wait_for_running(self, instance, tries=60, wait=1):
|
||||||
"""Wait for instance to be running"""
|
"""Wait for instance to be running."""
|
||||||
for x in xrange(tries):
|
for x in xrange(tries):
|
||||||
instance.update()
|
instance.update()
|
||||||
if instance.state.startswith('running'):
|
if instance.state.startswith('running'):
|
||||||
@ -73,7 +73,7 @@ class SmokeTestCase(unittest.TestCase):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def wait_for_deleted(self, instance, tries=60, wait=1):
|
def wait_for_deleted(self, instance, tries=60, wait=1):
|
||||||
"""Wait for instance to be deleted"""
|
"""Wait for instance to be deleted."""
|
||||||
for x in xrange(tries):
|
for x in xrange(tries):
|
||||||
try:
|
try:
|
||||||
#NOTE(dprince): raises exception when instance id disappears
|
#NOTE(dprince): raises exception when instance id disappears
|
||||||
@ -85,7 +85,7 @@ class SmokeTestCase(unittest.TestCase):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def wait_for_ping(self, ip, command="ping", tries=120):
|
def wait_for_ping(self, ip, command="ping", tries=120):
|
||||||
"""Wait for ip to be pingable"""
|
"""Wait for ip to be pingable."""
|
||||||
for x in xrange(tries):
|
for x in xrange(tries):
|
||||||
if self.can_ping(ip, command):
|
if self.can_ping(ip, command):
|
||||||
return True
|
return True
|
||||||
@ -93,7 +93,7 @@ class SmokeTestCase(unittest.TestCase):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def wait_for_ssh(self, ip, key_name, tries=30, wait=5):
|
def wait_for_ssh(self, ip, key_name, tries=30, wait=5):
|
||||||
"""Wait for ip to be sshable"""
|
"""Wait for ip to be sshable."""
|
||||||
for x in xrange(tries):
|
for x in xrange(tries):
|
||||||
try:
|
try:
|
||||||
conn = self.connect_ssh(ip, key_name)
|
conn = self.connect_ssh(ip, key_name)
|
||||||
@ -141,9 +141,7 @@ class SmokeTestCase(unittest.TestCase):
|
|||||||
**kwargs)
|
**kwargs)
|
||||||
|
|
||||||
def split_clc_url(self, clc_url):
|
def split_clc_url(self, clc_url):
|
||||||
"""
|
"""Splits a cloud controller endpoint url."""
|
||||||
Splits a cloud controller endpoint url.
|
|
||||||
"""
|
|
||||||
parts = httplib.urlsplit(clc_url)
|
parts = httplib.urlsplit(clc_url)
|
||||||
is_secure = parts.scheme == 'https'
|
is_secure = parts.scheme == 'https'
|
||||||
ip, port = parts.netloc.split(':')
|
ip, port = parts.netloc.split(':')
|
||||||
|
Loading…
Reference in New Issue
Block a user