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

@ -57,7 +57,7 @@ if __name__ == '__main__':
create_options(oparser)
(options, args) = config.parse_options(oparser)
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)
server = wsgi.Server()
server.start(app, options.get('port', conf['bind_port']),

@ -52,7 +52,7 @@ def _load_app_environment():
oparser = optparse.OptionParser()
config.add_log_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)
_configure_db_session(conf)

@ -108,7 +108,7 @@ if __name__ == '__main__':
sys.exit(2)
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)
command_name = args.pop(0)

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

@ -24,9 +24,7 @@ from openstack.common import config as openstack_config
parse_options = openstack_config.parse_options
add_log_options = openstack_config.add_log_options
add_common_options = openstack_config.add_common_options
load_paste_config = openstack_config.load_paste_config
setup_logging = openstack_config.setup_logging
load_paste_app = openstack_config.load_paste_app
get_option = openstack_config.get_option
@ -34,6 +32,18 @@ class Config(object):
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
def get(cls, key, default=None):
return cls.instance.get(key, default)

@ -391,7 +391,7 @@ class IpBlock(ModelBase):
def _deallocated_by_date(self):
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):
network_id = network_id or self.network_id

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

@ -41,12 +41,12 @@ def setup():
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)
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)

@ -15,7 +15,10 @@
# License for the specific language governing permissions and limitations
# under the License.
import datetime
import melange
from melange.common import config
from melange.ipam import models
from melange import tests
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(
melange.melange_bin_path('melange-manage')))
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))

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

@ -28,7 +28,7 @@ class TestExtensions(unittest.TestCase):
def test_extension_loads_with_melange_xmlns(self):
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)
test_app = webtest.TestApp(app)

@ -36,7 +36,7 @@ class BaseTestController(tests.BaseTest):
def setUp(self):
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)
self.app = unit.TestApp(melange_app)

@ -25,7 +25,7 @@ from melange.tests import unit
class TestVersionsController(tests.BaseTest):
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)
self.test_app = webtest.TestApp(melange_app)
super(TestVersionsController, self).setUp()