Commit dfc788b9 authored by Cédric Le Ninivin's avatar Cédric Le Ninivin

Merge branch 'proxy_slave_raise'

parents 47bd2ede a6cc5765
......@@ -31,7 +31,7 @@ from flask import g, Flask, request, abort
import xml_marshaller
from lxml import etree
from slapos.slap.slap import Computer, ComputerPartition, \
SoftwareRelease, SoftwareInstance
SoftwareRelease, SoftwareInstance, NotFoundError
import sqlite3
app = Flask(__name__)
......@@ -72,27 +72,30 @@ def dict2xml(dictionnary):
def partitiondict2partition(partition):
slap_partition = ComputerPartition(app.config['computer_id'],
partition['reference'])
slap_partition._requested_state = 'started'
slap_partition._software_release_document = None
slap_partition._requested_state = 'destroyed'
slap_partition._need_modification = 0
if partition['software_release']:
slap_partition._need_modification = 1
else:
slap_partition._need_modification = 0
slap_partition._parameter_dict = xml2dict(partition['xml'])
address_list = []
for address in execute_db('partition_network',
'SELECT * FROM %s WHERE partition_reference=?',
[partition['reference']]):
address_list.append((address['reference'], address['address']))
if not partition['slave_instance_list'] == None:
slap_partition._parameter_dict['slave_instance_list'] = \
xml_marshaller.xml_marshaller.loads(partition['slave_instance_list'])
slap_partition._parameter_dict['ip_list'] = address_list
slap_partition._parameter_dict['slap_software_type'] = \
partition['software_type']
slap_partition._connection_dict = xml2dict(partition['connection_xml'])
slap_partition._software_release_document = SoftwareRelease(
slap_partition._requested_state = 'started'
slap_partition._parameter_dict = xml2dict(partition['xml'])
address_list = []
for address in execute_db('partition_network',
'SELECT * FROM %s WHERE partition_reference=?',
[partition['reference']]):
address_list.append((address['reference'], address['address']))
slap_partition._parameter_dict['ip_list'] = address_list
slap_partition._parameter_dict['slap_software_type'] = \
partition['software_type']
if not partition['slave_instance_list'] == None:
slap_partition._parameter_dict['slave_instance_list'] = \
xml_marshaller.xml_marshaller.loads(partition['slave_instance_list'])
slap_partition._connection_dict = xml2dict(partition['connection_xml'])
slap_partition._software_release_document = SoftwareRelease(
software_release=partition['software_release'],
computer_guid=app.config['computer_id'])
return slap_partition
......
......@@ -96,6 +96,27 @@ database_uri = %(tempdir)s/lib/proxy.db
views.app.config['port'] = config.port
self.app = views.app.test_client()
def add_free_partition (self, partition_amount):
"""
Will simulate a slapformat first run
and create "partition_amount" partitions
"""
computer_dict = {'reference':self.computer_id,
'address':'123.456.789',
'netmask':'fffffffff',
'partition_list':[]}
for i in range(0, partition_amount):
partition_example = {'reference':'slappart%s' %i,
'address_list':[]}
computer_dict['partition_list'].append(partition_example)
request_dict = { 'computer_id': self.computer_id,
'xml': xml_marshaller.xml_marshaller.dumps(computer_dict),
}
self.app.post('/loadComputerConfigurationFromXML',
data = request_dict)
def tearDown(self):
"""
Remove files generated for test
......@@ -137,36 +158,30 @@ class TestInformation(BasicMixin, unittest.TestCase):
Test that computer information won't be given to a requester different
from the one specified
"""
with self.assertRaises(views.UnauthorizedError):
with self.assertRaises(slapos.slap.NotFoundError):
self.app.get('/getComputerInformation?computer_id='
+ self.computer_id + '42')
def test_partition_are_empty (self):
"""
Test that empty partition are empty :)
"""
self.add_free_partition(10)
rv = self.app.get('/getFullComputerInformation?computer_id='
+ self.computer_id)
computer = xml_marshaller.xml_marshaller.loads(rv.data)
for slap_partition in computer._computer_partition_list:
self.assertIsNone(slap_partition._software_release_document)
self.assertEqual(slap_partition._requested_state, 'destroyed')
self.assertEqual(slap_partition._need_modification, 0)
class MasterMixin(BasicMixin):
"""
Define advanced tool for test proxy simulating behavior slap library tools
"""
def add_free_partition (self, partition_amount):
"""
Will simulate a slapformat first run
and create "partition_amount" partitions
"""
computer_dict = {'reference':self.computer_id,
'address':'123.456.789',
'netmask':'fffffffff',
'partition_list':[]}
for i in range(0, partition_amount):
partition_example = {'reference':'slappart%s' %i,
'address_list':[]}
computer_dict['partition_list'].append(partition_example)
request_dict = { 'computer_id': self.computer_id,
'xml': xml_marshaller.xml_marshaller.dumps(computer_dict),
}
self.app.post('/loadComputerConfigurationFromXML',
data = request_dict)
def request(self, software_release, software_type, partition_reference,
partition_id,
shared=False, partition_parameter_kw=None, filter_kw=None,
......@@ -239,7 +254,6 @@ class TestRequest (MasterMixin, unittest.TestCase):
"""
Set of tests for requests
"""
def test_two_request_one_partition_free (self):
"""
If only one partition is available and two different request are made
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment