Rajaram/Vinkesh| fixed bug in melange-delete-deallocated-ips where it wasnt loading the config file

This commit is contained in:
Rajaram Mallya 2011-09-20 17:43:48 +05:30
parent c760a91ec5
commit 19f34dedb0
13 changed files with 51 additions and 17 deletions

View File

@ -57,7 +57,7 @@ if __name__ == '__main__':
create_options(oparser) create_options(oparser)
(options, args) = config.parse_options(oparser) (options, args) = config.parse_options(oparser)
try: try:
conf, app = config.load_paste_app('melange', options, args) conf, app = config.Config.load_paste_app('melange', options, args)
db_api.configure_db(conf) db_api.configure_db(conf)
server = wsgi.Server() server = wsgi.Server()
server.start(app, options.get('port', conf['bind_port']), server.start(app, options.get('port', conf['bind_port']),

View File

@ -52,7 +52,7 @@ def _load_app_environment():
oparser = optparse.OptionParser() oparser = optparse.OptionParser()
config.add_log_options(oparser) config.add_log_options(oparser)
(options, args) = config.parse_options(oparser) (options, args) = config.parse_options(oparser)
conf_file, conf = config.load_paste_config('melange', options, args) conf = config.Config.load_paste_config('melange', options, args)
config.setup_logging(options=options, conf=conf) config.setup_logging(options=options, conf=conf)
_configure_db_session(conf) _configure_db_session(conf)

View File

@ -108,7 +108,7 @@ if __name__ == '__main__':
sys.exit(2) sys.exit(2)
try: try:
conf_file, conf = config.load_paste_config('melange', options, args) conf = config.Config.load_paste_config('melange', options, args)
config.setup_logging(options, conf) config.setup_logging(options, conf)
command_name = args.pop(0) command_name = args.pop(0)

View File

@ -41,6 +41,9 @@ default_cidr = 10.0.0.0/24
dns1 = "ns1.example.com" dns1 = "ns1.example.com"
dns2 = "ns2.example.com" dns2 = "ns2.example.com"
#Number of days before deallocated IPs are deleted
keep_deallocated_ips_for_days = 2
[composite:melange] [composite:melange]
use = call:melange.common.wsgi:versioned_urlmap use = call:melange.common.wsgi:versioned_urlmap
/: versions /: versions

View File

@ -24,9 +24,7 @@ from openstack.common import config as openstack_config
parse_options = openstack_config.parse_options parse_options = openstack_config.parse_options
add_log_options = openstack_config.add_log_options add_log_options = openstack_config.add_log_options
add_common_options = openstack_config.add_common_options add_common_options = openstack_config.add_common_options
load_paste_config = openstack_config.load_paste_config
setup_logging = openstack_config.setup_logging setup_logging = openstack_config.setup_logging
load_paste_app = openstack_config.load_paste_app
get_option = openstack_config.get_option get_option = openstack_config.get_option
@ -34,6 +32,18 @@ class Config(object):
instance = {} instance = {}
@classmethod
def load_paste_app(cls, *args, **kwargs):
conf, app = openstack_config.load_paste_app(*args, **kwargs)
cls.instance = conf
return conf, app
@classmethod
def load_paste_config(cls, *args, **kwargs):
conf_file, conf = openstack_config.load_paste_config(*args, **kwargs)
cls.instance = conf
return conf
@classmethod @classmethod
def get(cls, key, default=None): def get(cls, key, default=None):
return cls.instance.get(key, default) return cls.instance.get(key, default)

View File

@ -391,7 +391,7 @@ class IpBlock(ModelBase):
def _deallocated_by_date(self): def _deallocated_by_date(self):
days = config.Config.get('keep_deallocated_ips_for_days', 2) days = config.Config.get('keep_deallocated_ips_for_days', 2)
return utils.utcnow() - datetime.timedelta(days=days) return utils.utcnow() - datetime.timedelta(days=int(days))
def subnet(self, cidr, network_id=None, tenant_id=None): def subnet(self, cidr, network_id=None, tenant_id=None):
network_id = network_id or self.network_id network_id = network_id or self.network_id

View File

@ -455,7 +455,4 @@ class API(wsgi.Router):
def app_factory(global_conf, **local_conf): def app_factory(global_conf, **local_conf):
conf = global_conf.copy()
conf.update(local_conf)
config.Config.instance = conf
return API() return API()

View File

@ -41,12 +41,12 @@ def setup():
def _configure_db(): def _configure_db():
conf_file, conf = config.load_paste_config("melange", {}, None) conf = config.Config.load_paste_config("melange", {}, None)
db_api.configure_db(conf) db_api.configure_db(conf)
def _db_sync(): def _db_sync():
conf_file, conf = config.load_paste_config("melange", {}, None) conf = config.Config.load_paste_config("melange", {}, None)
db_api.db_sync(conf) db_api.db_sync(conf)

View File

@ -15,7 +15,10 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
import datetime
import melange import melange
from melange.common import config
from melange.ipam import models from melange.ipam import models
from melange import tests from melange import tests
from melange.tests.factories import models as factory_models from melange.tests.factories import models as factory_models
@ -389,3 +392,25 @@ class TestDBUpgradeCLI(tests.BaseTest):
exitcode, out, err = functional.execute("{0} db_upgrade".format( exitcode, out, err = functional.execute("{0} db_upgrade".format(
melange.melange_bin_path('melange-manage'))) melange.melange_bin_path('melange-manage')))
self.assertEqual(exitcode, 0) self.assertEqual(exitcode, 0)
class TestDeleteDeallocatedIps(tests.BaseTest):
def test_deallocated_ips_get_deleted(self):
block = factory_models.PublicIpBlockFactory()
ip = block.allocate_ip()
block.deallocate_ip(ip.address)
days = config.Config.get('keep_deallocated_ips_for_days')
self._push_back_deallocated_date(ip, days)
exitcode, out, err = functional.execute(
melange.melange_bin_path('melange-delete-deallocated-ips'))
self.assertIsNone(models.IpAddress.get(ip.id))
def _push_back_deallocated_date(self, ip, days):
days_to_subtract = datetime.timedelta(days=int(days))
deallocated_ip = models.IpAddress.find(ip.id)
new_deallocated_date = deallocated_ip.deallocated_at - days_to_subtract
deallocated_ip.update(deallocated_at=(new_deallocated_date))

View File

@ -79,9 +79,8 @@ class TestApp(webtest.TestApp):
def setup(): def setup():
conf_file, conf = config.load_paste_config("melange", options = {"config_file": test_config_path()}
{"config_file": conf = config.Config.load_paste_config("melange", options, None)
test_config_path()}, None)
db_api.drop_db(conf) db_api.drop_db(conf)
db_api.db_sync(conf) db_api.db_sync(conf)

View File

@ -28,7 +28,7 @@ class TestExtensions(unittest.TestCase):
def test_extension_loads_with_melange_xmlns(self): def test_extension_loads_with_melange_xmlns(self):
options = {'config_file': unit.test_config_path()} options = {'config_file': unit.test_config_path()}
conf, app = config.load_paste_app('extensions_app_with_filter', conf, app = config.Config.load_paste_app('extensions_app_with_filter',
options, None) options, None)
test_app = webtest.TestApp(app) test_app = webtest.TestApp(app)

View File

@ -36,7 +36,7 @@ class BaseTestController(tests.BaseTest):
def setUp(self): def setUp(self):
super(BaseTestController, self).setUp() super(BaseTestController, self).setUp()
conf, melange_app = config.load_paste_app('melange', conf, melange_app = config.Config.load_paste_app('melange',
{"config_file": unit.test_config_path()}, None) {"config_file": unit.test_config_path()}, None)
self.app = unit.TestApp(melange_app) self.app = unit.TestApp(melange_app)

View File

@ -25,7 +25,7 @@ from melange.tests import unit
class TestVersionsController(tests.BaseTest): class TestVersionsController(tests.BaseTest):
def setUp(self): def setUp(self):
conf, melange_app = config.load_paste_app('versioned_melange', conf, melange_app = config.Config.load_paste_app('versioned_melange',
{"config_file": unit.test_config_path()}, None) {"config_file": unit.test_config_path()}, None)
self.test_app = webtest.TestApp(melange_app) self.test_app = webtest.TestApp(melange_app)
super(TestVersionsController, self).setUp() super(TestVersionsController, self).setUp()