Skip to content

Commit

Permalink
s/onset_files/injected_files/g
Browse files Browse the repository at this point in the history
  • Loading branch information
Mark Washenberger committed Mar 15, 2011
1 parent 1d69d49 commit e9ef6e0
Show file tree
Hide file tree
Showing 8 changed files with 101 additions and 100 deletions.
16 changes: 8 additions & 8 deletions nova/api/openstack/servers.py
Expand Up @@ -169,7 +169,7 @@ def create(self, req):
metadata.append({'key': k, 'value': v})

personality = env['server'].get('personality', [])
onset_files = self._get_onset_files(personality)
injected_files = self._get_injected_files(personality)

try:
instances = self.compute_api.create(
Expand All @@ -183,7 +183,7 @@ def create(self, req):
key_name=key_pair['name'],
key_data=key_pair['public_key'],
metadata=metadata,
onset_files=onset_files)
injected_files=injected_files)
except QuotaError as error:
self._handle_quota_error(error)

Expand All @@ -207,15 +207,15 @@ def _deserialize_create(self, request):
else:
return self._deserialize(request.body, request.get_content_type())

def _get_onset_files(self, personality):
def _get_injected_files(self, personality):
"""
Create a list of onset files from the personality attribute
Create a list of injected files from the personality attribute
At this time, onset_files must be formatted as a list of
At this time, injected_files must be formatted as a list of
(file_path, file_content) pairs for compatibility with the
underlying compute service.
"""
onset_files = []
injected_files = []
for item in personality:
try:
path = item['path']
Expand All @@ -230,8 +230,8 @@ def _get_onset_files(self, personality):
except TypeError:
msg = 'Personality content for %s cannot be decoded' % path
raise exc.HTTPBadRequest(explanation=msg)
onset_files.append((path, contents))
return onset_files
injected_files.append((path, contents))
return injected_files

def _handle_quota_errors(self, error):
"""
Expand Down
22 changes: 11 additions & 11 deletions nova/compute/api.py
Expand Up @@ -80,20 +80,20 @@ def get_network_topic(self, context, instance_id):
topic,
{"method": "get_network_topic", "args": {'fake': 1}})

def _check_onset_file_quota(self, context, onset_files):
def _check_injected_file_quota(self, context, injected_files):
"""
Enforce quota limits on onset files
Enforce quota limits on injected files
Raises a QuotaError if any limit is exceeded
"""
if onset_files is None:
if injected_files is None:
return
limit = quota.allowed_onset_files(context)
if len(onset_files) > limit:
limit = quota.allowed_injected_files(context)
if len(injected_files) > limit:
raise quota.QuotaError(code="OnsetFileLimitExceeded")
path_limit = quota.allowed_onset_file_path_bytes(context)
content_limit = quota.allowed_onset_file_content_bytes(context)
for path, content in onset_files:
path_limit = quota.allowed_injected_file_path_bytes(context)
content_limit = quota.allowed_injected_file_content_bytes(context)
for path, content in injected_files:
if len(path) > path_limit:
raise quota.QuotaError(code="OnsetFilePathLimitExceeded")
if len(content) > content_limit:
Expand All @@ -105,7 +105,7 @@ def create(self, context, instance_type,
display_name='', display_description='',
key_name=None, key_data=None, security_group='default',
availability_zone=None, user_data=None, metadata=[],
onset_files=None):
injected_files=None):
"""Create the number of instances requested if quota and
other arguments check out ok."""

Expand Down Expand Up @@ -143,7 +143,7 @@ def create(self, context, instance_type,
LOG.warn(msg)
raise quota.QuotaError(msg, "MetadataLimitExceeded")

self._check_onset_file_quota(context, onset_files)
self._check_injected_file_quota(context, injected_files)

image = self.image_service.show(context, image_id)

Expand Down Expand Up @@ -246,7 +246,7 @@ def create(self, context, instance_type,
"args": {"topic": FLAGS.compute_topic,
"instance_id": instance_id,
"availability_zone": availability_zone,
"onset_files": onset_files}})
"injected_files": injected_files}})

for group_id in security_groups:
self.trigger_security_group_members_refresh(elevated, group_id)
Expand Down
2 changes: 1 addition & 1 deletion nova/compute/manager.py
Expand Up @@ -179,7 +179,7 @@ def run_instance(self, context, instance_id, **kwargs):
"""Launch a new instance with specified options."""
context = context.elevated()
instance_ref = self.db.instance_get(context, instance_id)
instance_ref.onset_files = kwargs.get('onset_files', [])
instance_ref.injected_files = kwargs.get('injected_files', [])
if instance_ref['name'] in self.driver.list_instances():
raise exception.Error(_("Instance has already been created"))
LOG.audit(_("instance %s: starting..."), instance_id,
Expand Down
2 changes: 1 addition & 1 deletion nova/db/sqlalchemy/models.py
Expand Up @@ -161,7 +161,7 @@ class Certificate(BASE, NovaBase):
class Instance(BASE, NovaBase):
"""Represents a guest vm."""
__tablename__ = 'instances'
onset_files = []
injected_files = []

id = Column(Integer, primary_key=True, autoincrement=True)

Expand Down
30 changes: 15 additions & 15 deletions nova/quota.py
Expand Up @@ -37,12 +37,12 @@
'number of floating ips allowed per project')
flags.DEFINE_integer('quota_metadata_items', 128,
'number of metadata items allowed per instance')
flags.DEFINE_integer('quota_max_onset_files', 5,
'number of onset files allowed')
flags.DEFINE_integer('quota_max_onset_file_content_bytes', 10 * 1024,
'number of bytes allowed per onset file')
flags.DEFINE_integer('quota_max_onset_file_path_bytes', 255,
'number of bytes allowed per onset file path')
flags.DEFINE_integer('quota_max_injected_files', 5,
'number of injected files allowed')
flags.DEFINE_integer('quota_max_injected_file_content_bytes', 10 * 1024,
'number of bytes allowed per injected file')
flags.DEFINE_integer('quota_max_injected_file_path_bytes', 255,
'number of bytes allowed per injected file path')


def get_quota(context, project_id):
Expand Down Expand Up @@ -113,19 +113,19 @@ def allowed_metadata_items(context, num_metadata_items):
return min(num_metadata_items, num_allowed_metadata_items)


def allowed_onset_files(context):
"""Return the number of onset files allowed"""
return int(FLAGS.quota_max_onset_files)
def allowed_injected_files(context):
"""Return the number of injected files allowed"""
return FLAGS.quota_max_injected_files


def allowed_onset_file_content_bytes(context):
"""Return the number of bytes allowed per onset file content"""
return int(FLAGS.quota_max_onset_file_content_bytes)
def allowed_injected_file_content_bytes(context):
"""Return the number of bytes allowed per injected file content"""
return FLAGS.quota_max_injected_file_content_bytes


def allowed_onset_file_path_bytes(context):
"""Return the number of bytes allowed in an onset file path"""
return int(FLAGS.quota_max_onset_file_path_bytes)
def allowed_injected_file_path_bytes(context):
"""Return the number of bytes allowed in an injected file path"""
return FLAGS.quota_max_injected_file_path_bytes


class QuotaError(exception.ApiError):
Expand Down
48 changes: 24 additions & 24 deletions nova/tests/api/openstack/test_servers.py
Expand Up @@ -834,13 +834,13 @@ def _setup_mock_compute_api_for_personality(self):
class MockComputeAPI(object):

def __init__(self):
self.onset_files = None
self.injected_files = None

def create(self, *args, **kwargs):
if 'onset_files' in kwargs:
self.onset_files = kwargs['onset_files']
if 'injected_files' in kwargs:
self.injected_files = kwargs['injected_files']
else:
self.onset_files = None
self.injected_files = None
return [{'id': '1234', 'display_name': 'fakeinstance'}]

def set_admin_password(self, *args, **kwargs):
Expand Down Expand Up @@ -920,46 +920,46 @@ def _create_instance_with_personality_json(self, personality):
request = self._get_create_request_json(body_dict)
compute_api, response = \
self._run_create_instance_with_mock_compute_api(request)
return request, response, compute_api.onset_files
return request, response, compute_api.injected_files

def _create_instance_with_personality_xml(self, personality):
body_dict = self._create_personality_request_dict(personality)
request = self._get_create_request_xml(body_dict)
compute_api, response = \
self._run_create_instance_with_mock_compute_api(request)
return request, response, compute_api.onset_files
return request, response, compute_api.injected_files

def test_create_instance_with_no_personality(self):
request, response, onset_files = \
request, response, injected_files = \
self._create_instance_with_personality_json(personality=None)
self.assertEquals(response.status_int, 200)
self.assertEquals(onset_files, [])
self.assertEquals(injected_files, [])

def test_create_instance_with_no_personality_xml(self):
request, response, onset_files = \
request, response, injected_files = \
self._create_instance_with_personality_xml(personality=None)
self.assertEquals(response.status_int, 200)
self.assertEquals(onset_files, [])
self.assertEquals(injected_files, [])

def test_create_instance_with_personality(self):
path = '/my/file/path'
contents = '#!/bin/bash\necho "Hello, World!"\n'
b64contents = base64.b64encode(contents)
personality = [(path, b64contents)]
request, response, onset_files = \
request, response, injected_files = \
self._create_instance_with_personality_json(personality)
self.assertEquals(response.status_int, 200)
self.assertEquals(onset_files, [(path, contents)])
self.assertEquals(injected_files, [(path, contents)])

def test_create_instance_with_personality_xml(self):
path = '/my/file/path'
contents = '#!/bin/bash\necho "Hello, World!"\n'
b64contents = base64.b64encode(contents)
personality = [(path, b64contents)]
request, response, onset_files = \
request, response, injected_files = \
self._create_instance_with_personality_xml(personality)
self.assertEquals(response.status_int, 200)
self.assertEquals(onset_files, [(path, contents)])
self.assertEquals(injected_files, [(path, contents)])

def test_create_instance_with_personality_no_path(self):
personality = [('/remove/this/path',
Expand All @@ -970,7 +970,7 @@ def test_create_instance_with_personality_no_path(self):
compute_api, response = \
self._run_create_instance_with_mock_compute_api(request)
self.assertEquals(response.status_int, 400)
self.assertEquals(compute_api.onset_files, None)
self.assertEquals(compute_api.injected_files, None)

def _test_create_instance_with_personality_no_path_xml(self):
personality = [('/remove/this/path',
Expand All @@ -981,7 +981,7 @@ def _test_create_instance_with_personality_no_path_xml(self):
compute_api, response = \
self._run_create_instance_with_mock_compute_api(request)
self.assertEquals(response.status_int, 400)
self.assertEquals(compute_api.onset_files, None)
self.assertEquals(compute_api.injected_files, None)

def test_create_instance_with_personality_no_contents(self):
personality = [('/test/path',
Expand All @@ -992,7 +992,7 @@ def test_create_instance_with_personality_no_contents(self):
compute_api, response = \
self._run_create_instance_with_mock_compute_api(request)
self.assertEquals(response.status_int, 400)
self.assertEquals(compute_api.onset_files, None)
self.assertEquals(compute_api.injected_files, None)

def test_create_instance_with_personality_not_a_list(self):
personality = [('/test/path', base64.b64encode('test\ncontents\n'))]
Expand All @@ -1003,16 +1003,16 @@ def test_create_instance_with_personality_not_a_list(self):
compute_api, response = \
self._run_create_instance_with_mock_compute_api(request)
self.assertEquals(response.status_int, 400)
self.assertEquals(compute_api.onset_files, None)
self.assertEquals(compute_api.injected_files, None)

def test_create_instance_with_personality_with_non_b64_content(self):
path = '/my/file/path'
contents = '#!/bin/bash\necho "Oh no!"\n'
personality = [(path, contents)]
request, response, onset_files = \
request, response, injected_files = \
self._create_instance_with_personality_json(personality)
self.assertEquals(response.status_int, 400)
self.assertEquals(onset_files, None)
self.assertEquals(injected_files, None)

def test_create_instance_with_three_personalities(self):
files = [
Expand All @@ -1023,19 +1023,19 @@ def test_create_instance_with_three_personalities(self):
personality = []
for path, content in files:
personality.append((path, base64.b64encode(content)))
request, response, onset_files = \
request, response, injected_files = \
self._create_instance_with_personality_json(personality)
self.assertEquals(response.status_int, 200)
self.assertEquals(onset_files, files)
self.assertEquals(injected_files, files)

def test_create_instance_personality_empty_content(self):
path = '/my/file/path'
contents = ''
personality = [(path, contents)]
request, response, onset_files = \
request, response, injected_files = \
self._create_instance_with_personality_json(personality)
self.assertEquals(response.status_int, 200)
self.assertEquals(onset_files, [(path, contents)])
self.assertEquals(injected_files, [(path, contents)])

def test_create_instance_admin_pass_json(self):
request, response, dummy = \
Expand Down

0 comments on commit e9ef6e0

Please sign in to comment.