where $HOST will do its best to resolve to what the requester would need to use to reach this host. Here are example entries, required for running the tests:'
- comment: 'New param'
-
- - name: 'filter:tempauth.paste.filter_factory'
- type: string
- default: 'keystoneclient.middleware.auth_token:filter_factory'
- help: '[filter:authtoken]'
- comment: 'New param'
-
- - name: 'filter:tempauth.auth_host'
- type: string
- default: 'keystonehost'
- help: '[filter:authtoken]'
- comment: 'New param'
-
- - name: 'filter:tempauth.auth_port'
- type: string
- default: '35357'
- help: '[filter:authtoken]'
- comment: 'New param'
-
- - name: 'filter:tempauth.auth_protocol'
- type: string
- default: 'http'
- help: '[filter:authtoken]'
- comment: 'New param'
-
- - name: 'filter:tempauth.auth_uri'
- type: string
- default: 'http://keystonehost:5000/'
- help: '[filter:authtoken]'
- comment: 'New param'
-
- - name: 'filter:tempauth.admin_tenant_name'
- type: string
- default: 'service'
- help: '[filter:authtoken]'
- comment: 'New param'
-
- - name: 'filter:tempauth.admin_user'
- type: string
- default: 'swift'
- help: '[filter:authtoken]'
- comment: 'New param'
-
- - name: 'filter:tempauth.admin_password'
- type: string
- default: 'password'
- help: '[filter:authtoken]'
- comment: 'New param'
-
- - name: 'filter:tempauth.delay_auth_decision'
- type: string
- default: '1'
- help: '[filter:authtoken]'
- comment: 'New param'
-
- - name: 'filter:tempauth.cache'
- type: string
- default: 'swift.cache'
- help: '[filter:authtoken]'
- comment: 'New param'
-
- - name: 'filter:tempauth.operator_roles'
- type: string
- default: 'admin, swiftoperator'
- help: '[filter:keystoneauth] Operator roles is the role which user would be allowed to manage a tenant and be able to create container or give ACL to others.'
- comment: 'New param'
-
- - name: 'filter:tempauth.reseller_admin_role'
- type: string
- default: 'ResellerAdmin'
- help: '[filter:keystoneauth] Operator roles is the role which user would be allowed to manage a tenant and be able to create container or give ACL to others. The reseller admin role has the ability to create and delete accounts'
- comment: 'New param'
-
- - name: 'filter:healthcheck.disable_path'
- type: string
- default: ''
- help: "An optional filesystem path, which if present, will cause the healthcheck URL to return '503 Service Unavailable' with a body of 'DISABLED BY FILE'. This facility may be used to temporarily remove a Swift node from a load balancer pool during maintenance or upgrade (remove the file to allow the node back into the load balancer pool)."
- comment: 'New param'
-
- - name: 'filter:cache.memcache_servers'
- type: string
- default: '127.0.0.1:11211'
- help: 'If not set here, the value for memcache_servers will be read from memcache.conf (see memcache.conf-sample) or lacking that file, it will default to the value below. You can specify multiple servers separated with commas, as in: 10.1.2.3:11211,10.1.2.4:11211'
- comment: 'New param'
-
- - name: 'filter:cache.memcache_serialization_support'
- type: string
- default: '2'
- help: 'Sets how memcache values are serialized and deserialized: 0 = older, insecure pickle serialization 1 = json serialization but pickles can still be read (still insecure) 2 = json serialization only (secure and the default) If not set here, the value for memcache_serialization_support will be read from /etc/swift/memcache.conf (see memcache.conf-sample). To avoid an instant full cache flush, existing installations should upgrade with 0, then set to 1 and reload, then after some time (24 hours) set to 2 and reload. In the future, the ability to use pickle serialization will be removed.'
- comment: 'New param'
-
- - name: 'filter:ratelimit.clock_accuracy'
- type: string
- default: '1000'
- help: "clock_accuracy should represent how accurate the proxy servers' system clocks are with each other. 1000 means that all the proxies' clock are accurate to each other within 1 millisecond. No ratelimit should be higher than the clock accuracy."
- comment: 'New param'
-
- - name: 'filter:ratelimit.max_sleep_time_seconds'
- type: string
- default: '60'
- comment: 'New param'
-
- - name: 'filter:ratelimit.log_sleep_time_seconds'
- type: string
- default: '0'
- help: 'log_sleep_time_seconds of 0 means disabled'
- comment: 'New param'
-
- - name: 'filter:ratelimit.rate_buffer_seconds'
- type: string
- default: '5'
- help: "allows for slow rates (e.g. running up to 5 sec's behind) to catch up."
- comment: 'New param'
-
- - name: 'filter:ratelimit.account_ratelimit'
- type: string
- default: '0'
- help: 'account_ratelimit of 0 means disabled'
- comment: 'New param'
-
- - name: 'filter:ratelimit.account_whitelist'
- type: string
- default: 'a,b'
- help: 'these are comma separated lists of account names'
- comment: 'New param'
-
- - name: 'filter:ratelimit.account_blacklist'
- type: string
- default: 'c,d'
- help: 'these are comma separated lists of account names'
- comment: 'New param'
-
- - name: 'filter:ratelimit.with container_limit_x'
- type: string
- default: 'r'
- comment: 'New param'
-
- - name: 'filter:ratelimit.container_ratelimit_0'
- type: string
- default: '100'
- help: 'for containers of size x limit write requests per second to r. The container rate will be linearly interpolated from the values given. With the values below, a container of size 5 will get a rate of 75.'
- comment: 'New param'
-
- - name: 'filter:ratelimit.container_ratelimit_10'
- type: string
- default: '50'
- help: 'for containers of size x limit write requests per second to r. The container rate will be linearly interpolated from the values given. With the values below, a container of size 5 will get a rate of 75.'
- comment: 'New param'
-
- - name: 'filter:ratelimit.container_ratelimit_50'
- type: string
- default: '20'
- help: 'for containers of size x limit write requests per second to r. The container rate will be linearly interpolated from the values given. With the values below, a container of size 5 will get a rate of 75.'
- comment: 'New param'
-
- - name: 'filter:ratelimit.container_listing_ratelimit_0'
- type: string
- default: '100'
- help: 'Similarly to the above container-level write limits, the following will limit container GET (listing) requests.'
- comment: 'New param'
-
- - name: 'filter:ratelimit.container_listing_ratelimit_10'
- type: string
- default: '50'
- help: 'Similarly to the above container-level write limits, the following will limit container GET (listing) requests.'
- comment: 'New param'
-
- - name: 'filter:ratelimit.container_listing_ratelimit_50'
- type: string
- default: '20'
- help: 'Similarly to the above container-level write limits, the following will limit container GET (listing) requests.'
- comment: 'New param'
-
- - name: 'filter:cname_lookup.storage_domain'
- type: string
- default: 'example.com'
- comment: 'New param'
-
- - name: 'filter:domain_remap.path_root'
- type: string
- default: 'v1'
- comment: 'New param'
-
- - name: 'filter:domain_remap.reseller_prefixes'
- type: string
- default: 'AUTH'
- comment: 'New param'
-
- - name: 'filter:cname_lookup.lookup_depth'
- type: string
- default: '1'
- comment: 'New param'
-
- - name: 'filter:tempurl.methods'
- type: string
- default: 'GET HEAD PUT'
- help: 'The methods allowed with Temp URLs.'
- comment: 'New param'
-
- - name: 'filter:tempurl.incoming_remove_headers'
- type: string
- default: 'x-timestamp'
- help: "The headers to remove from incoming requests. Simply a whitespace delimited list of header names and names can optionally end with '*' to indicate a prefix match. incoming_allow_headers is a list of exceptions to these removals."
- comment: 'New param'
-
- - name: 'filter:tempurl.incoming_allow_headers'
- type: string
- default: ''
- help: "The headers allowed as exceptions to incoming_remove_headers. Simply a whitespace delimited list of header names and names can optionally end with '*' to indicate a prefix match."
- comment: 'New param'
-
- - name: 'filter:tempurl.outgoing_remove_headers'
- type: string
- default: 'x-object-meta-*'
- help: "The headers to remove from outgoing responses. Simply a whitespace delimited list of header names and names can optionally end with '*' to indicate a prefix match. outgoing_allow_headers is a list of exceptions to these removals."
- comment: 'New param'
-
- - name: 'filter:name_check.forbidden_chars'
- type: string
- default: "\\'\"`<>"
- comment: 'New param'
-
- - name: 'filter:name_check.maximum_length'
- type: string
- default: '255'
- comment: 'New param'
-
- - name: 'filter:name_check.forbidden_regexp'
- type: string
- default: '/\\./|/\\.\\./|/\\.$|/\\.\\.$'
- comment: 'New param'
-
- - name: 'filter:list-endpoints.list_endpoints_path'
- type: string
- default: '/endpoints/'
- comment: 'New param'
-
- - name: 'filter:proxy-logging.access_log_name'
- type: string
- default: 'swift'
- help: "If not set, logging directives from [DEFAULT] without 'access_' will be used"
- comment: 'New param'
-
- - name: 'filter:proxy-logging.access_log_facility'
- type: string
- default: 'LOG_LOCAL0'
- help: "If not set, logging directives from [DEFAULT] without 'access_' will be used"
- comment: 'New param'
-
- - name: 'filter:proxy-logging.access_log_level'
- type: string
- default: 'INFO'
- help: "If not set, logging directives from [DEFAULT] without 'access_' will be used"
- comment: 'New param'
-
- - name: 'filter:proxy-logging.access_log_address'
- type: string
- default: '/dev/log'
- help: "If not set, logging directives from [DEFAULT] without 'access_' will be used"
- comment: 'New param'
-
- - name: 'filter:proxy-logging.access_log_udp_host'
- type: string
- default: ''
- help: 'If set, access_log_udp_host will override access_log_address'
- comment: 'New param'
-
- - name: 'filter:proxy-logging.access_log_udp_port'
- type: string
- default: '514'
- help: 'If set, access_log_udp_host will override access_log_address'
- comment: 'New param'
-
- - name: 'filter:proxy-logging.access_log_statsd_host'
- type: host
- default: 'localhost'
- help: 'You can use log_statsd_* from [DEFAULT] or override them here:'
- comment: 'New param'
-
- - name: 'filter:proxy-logging.access_log_statsd_port'
- type: string
- default: '8125'
- help: 'You can use log_statsd_* from [DEFAULT] or override them here:'
- comment: 'New param'
-
- - name: 'filter:proxy-logging.access_log_statsd_default_sample_rate'
- type: string
- default: '1.0'
- help: 'You can use log_statsd_* from [DEFAULT] or override them here:'
- comment: 'New param'
-
- - name: 'filter:proxy-logging.access_log_statsd_sample_rate_factor'
- type: string
- default: '1.0'
- help: 'You can use log_statsd_* from [DEFAULT] or override them here:'
- comment: 'New param'
-
- - name: 'filter:proxy-logging.access_log_statsd_metric_prefix'
- type: string
- default: ''
- help: 'You can use log_statsd_* from [DEFAULT] or override them here:'
- comment: 'New param'
-
- - name: 'filter:proxy-logging.access_log_headers'
- type: string
- default: 'false'
- help: 'You can use log_statsd_* from [DEFAULT] or override them here:'
- comment: 'New param'
-
- - name: 'filter:bulk.max_containers_per_extraction'
- type: string
- default: '10000'
- comment: 'New param'
-
- - name: 'filter:bulk.max_failed_extractions'
- type: string
- default: '1000'
- comment: 'New param'
-
- - name: 'filter:bulk.max_deletes_per_request'
- type: string
- default: '10000'
- comment: 'New param'
-
- - name: 'filter:bulk.yield_frequency'
- type: string
- default: '60'
- comment: 'New param'
-
- - name: 'filter:slo.max_manifest_segments'
- type: string
- default: '1000'
- comment: 'New param'
-
- - name: 'filter:slo.max_manifest_size'
- type: string
- default: '2097152'
- comment: 'New param'
-
- - name: 'filter:slo.min_segment_size'
- type: string
- default: '1048576'
- comment: 'New param'
-
-# ====================================================
diff --git a/rubick/schemas/yaml_utils.py b/rubick/schemas/yaml_utils.py
deleted file mode 100644
index 853970e..0000000
--- a/rubick/schemas/yaml_utils.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (c) 2014 Mirantis Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and#
-# limitations under the License.
-
-
-def yaml_string(s, allowSimple=False):
- if "'" in s:
- return '"%s"' % s.replace('\\', '\\\\').replace('"', '\\"')
- else:
- if not allowSimple or any([c in s for c in " :,"]):
- return "'%s'" % s
- else:
- return s
-
-
-def yaml_value(x):
- if x is None:
- return '~'
- elif x is True:
- return 'true'
- elif x is False:
- return 'false'
- elif isinstance(x, str):
- return yaml_string(x)
- else:
- return repr(x)
diff --git a/rubick/templates/validation_error.html b/rubick/templates/validation_error.html
deleted file mode 100644
index 78db8bd..0000000
--- a/rubick/templates/validation_error.html
+++ /dev/null
@@ -1,29 +0,0 @@
-{% extends "bootstrap/base.html" %}
-{% import "bootstrap/wtf.html" as wtf %}
-
-{% block title %}OpenStack Validator Result{% endblock %}
-
-{% block content %}
-
-
OpenStack Validation Error
-
-
- {{ message }}
-
-
-
-
-
-
-{% endblock %}
-
diff --git a/rubick/templates/validation_form.html b/rubick/templates/validation_form.html
deleted file mode 100644
index 4bfc417..0000000
--- a/rubick/templates/validation_form.html
+++ /dev/null
@@ -1,13 +0,0 @@
-{% extends "bootstrap/base.html" %}
-{% import "bootstrap/wtf.html" as wtf %}
-
-{% block title %}OpenStack Validator{% endblock %}
-
-{% block content %}
-
-
OpenStack Validator
- {{ wtf.quick_form(form, action='/validation', method='POST', button_map={'launch': 'primary'}) }}
-
-
-{% endblock %}
-
diff --git a/rubick/templates/validation_result.html b/rubick/templates/validation_result.html
deleted file mode 100644
index 56b6de7..0000000
--- a/rubick/templates/validation_result.html
+++ /dev/null
@@ -1,65 +0,0 @@
-{% extends "bootstrap/base.html" %}
-{% import "bootstrap/wtf.html" as wtf %}
-
-{% block title %}OpenStack Validator Result{% endblock %}
-
-{% block content %}
-
-
OpenStack Validation Result
-
-
Hosts
-
- {% for host in openstack.hosts %}
- -
- {{ host.name }}
-
- {% for component in host.components %}
- - {{ component.name }} version {{ component.version }}
- {% endfor %}
-
-
- {% endfor %}
-
-
-
Issues
-
- {% for group, issues in grouped_issues %}
- -
-
- {% if group %}
- {{ group }}
- {% else %}
- General issues
- {% endif %}
-
-
- {% for issue in issues %}
- -
- {{ issue.type | capitalize }}
- {{ issue.message }}
- {% if issue.mark %}
- (line {{ issue.mark.line+1 }} column {{ issue.mark.column+1 }})
- {% endif %}
-
- {% endfor %}
-
-
- {% endfor %}
-
-
-
-
-
-
-{% endblock %}
-
diff --git a/rubick/templates/validation_state.html b/rubick/templates/validation_state.html
deleted file mode 100644
index 6b85c82..0000000
--- a/rubick/templates/validation_state.html
+++ /dev/null
@@ -1,23 +0,0 @@
-{% extends "bootstrap/base.html" %}
-
-{% block title %}OpenStack Validation{% endblock %}
-
-{% block content %}
-
-
OpenStack Validation Result
-
-
- Job state is {{ state }}
-
-
-
-
-
-
-{% endblock %}
-
-
diff --git a/rubick/test_config_schema_registry.py b/rubick/test_config_schema_registry.py
deleted file mode 100644
index b4012d2..0000000
--- a/rubick/test_config_schema_registry.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright (c) 2014 Mirantis Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and#
-# limitations under the License.
-import unittest
-from contextlib import contextmanager
-
-from rubick.schema import ConfigSchemaRegistry
-from rubick.common import find, Version
-
-
-class TestConfigSchemaLoader(object):
- def __init__(self):
- super(TestConfigSchemaLoader, self).__init__()
- self._records = []
-
- @contextmanager
- def version(self, version, checkpoint=False):
- self._current_version = dict(version=version, checkpoint=checkpoint,
- added=[], removed=[])
- self._records.append(self._current_version)
- yield
- self._current_version = None
-
- def param(self, name, type, default=None, description=None):
- self._current_version['added'].append(
- dict(name=name, type=type, default=default,
- description=description))
-
- def removed_param(self, name):
- self._current_version['removed'].append(name)
-
- def load(self, project, configname):
- return self._records
-
-
-class ConfigSchemaRegistryTests(unittest.TestCase):
-
- def test_sample(self):
- loader = TestConfigSchemaLoader()
- with loader.version('1.0.0', checkpoint=True):
- loader.param('verbose', type='boolean')
- loader.param('rabbit_host', type='address')
-
- with loader.version('1.1.0'):
- loader.param('verbose', type='boolean', default=False)
- loader.removed_param('rabbit_host')
-
- schema10 = ConfigSchemaRegistry.get_schema(
- project='nova', version='1.0.0', schema_loader=loader)
-
- self.assertEqual(Version('1.0.0'), schema10.version)
- self.assertEqual('ini', schema10.format)
-
- def find_param(params, name):
- return find(params, lambda p: p.name == name)
-
- verbose_param = find_param(schema10.parameters, 'verbose')
- self.assertIsNotNone(verbose_param)
- self.assertEqual('boolean', verbose_param.type)
- self.assertEqual(None, verbose_param.default)
-
- rabbit_host_param = find_param(schema10.parameters, 'rabbit_host')
- self.assertIsNotNone(rabbit_host_param)
- self.assertEqual('address', rabbit_host_param.type)
-
- schema11 = ConfigSchemaRegistry.get_schema(
- project='nova', version='1.1.0', schema_loader=loader)
-
- verbose_param11 = find_param(schema11.parameters, 'verbose')
- self.assertIsNotNone(verbose_param11)
- self.assertEqual(False, verbose_param11.default)
-
- rabbit_host_param11 = find_param(schema11.parameters, 'rabbit_host')
- self.assertIsNone(rabbit_host_param11)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/rubick/test_configuration.py b/rubick/test_configuration.py
deleted file mode 100644
index 9a2b384..0000000
--- a/rubick/test_configuration.py
+++ /dev/null
@@ -1,315 +0,0 @@
-# Copyright (c) 2014 Mirantis Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and#
-# limitations under the License.
-import unittest
-
-from rubick.config_model import Configuration
-from rubick.schema import ConfigSchema, ConfigParameterSchema, \
- InvalidValueError
-
-
-class ConfigurationTests(unittest.TestCase):
- section = 'section1'
- param = 'param1'
- fullparam = '%s.%s' % (section, param)
- value = 'foobar'
- default_value = 'bar123'
-
- def test_empty(self):
- c = Configuration()
- self.assertIsNone(c.get('section1.param1'))
-
- def test_storage(self):
- c = Configuration()
- c.set(self.fullparam, self.value)
-
- self.assertEqual(self.value, c.get(self.fullparam))
-
- def test_parameter_names_containing_sections(self):
- c = Configuration()
- c.set(self.fullparam, self.value)
-
- self.assertEqual(
- self.value, c.get('%s.%s' %
- (self.section, self.param)))
-
- def test_parameter_with_default_section(self):
- c = Configuration()
- c.set(self.param, self.value)
-
- self.assertEqual(self.value, c.get(self.param))
-
- def test_explicit_default_on_get(self):
- c = Configuration()
- override_value = '12345'
-
- self.assertEqual(
- override_value,
- c.get(self.fullparam,
- default=override_value))
-
- def test_default(self):
- c = Configuration()
- c.set_default(self.fullparam, self.default_value)
-
- self.assertEqual(self.default_value, c.get(self.fullparam))
-
- def test_normal_overrides_default(self):
- c = Configuration()
- c.set(self.fullparam, self.value)
- c.set_default(self.fullparam, self.default_value)
-
- self.assertEqual(self.value, c.get(self.fullparam))
-
- def test_contains(self):
- c = Configuration()
- self.assertFalse(c.contains(self.fullparam))
-
- def test_contains_default(self):
- c = Configuration()
- c.set_default(self.fullparam, self.default_value)
-
- self.assertTrue(c.contains(self.fullparam))
- self.assertFalse(c.contains(self.fullparam, ignoreDefault=True))
-
- def test_contains_normal(self):
- c = Configuration()
- c.set(self.fullparam, self.value)
-
- self.assertTrue(c.contains(self.fullparam))
- self.assertTrue(c.contains(self.fullparam, ignoreDefault=True))
-
- def test_is_default_returns_false_if_param_missing(self):
- c = Configuration()
- self.assertFalse(c.is_default(self.fullparam))
-
- def test_is_default_returns_true_if_only_default_value_set(self):
- c = Configuration()
- c.set_default(self.fullparam, self.default_value)
-
- self.assertTrue(c.is_default(self.fullparam))
-
- def test_is_default_returns_false_if_normal_value_set(self):
- c = Configuration()
- c.set(self.fullparam, self.value)
-
- self.assertFalse(c.is_default(self.fullparam))
-
- def test_is_default_returns_false_if_both_values_set(self):
- c = Configuration()
- c.set_default(self.fullparam, self.default_value)
- c.set(self.fullparam, self.value)
-
- self.assertFalse(c.is_default(self.fullparam))
-
- def test_subsection_set(self):
- c = Configuration()
- c.section(self.section).set(self.param, self.value)
-
- self.assertEqual(self.value, c.get(self.fullparam))
-
- def test_keys(self):
- c = Configuration()
- c.set_default('section1.param1', '123')
- c.set('section2.param1', '456')
-
- self.assertEqual(['section1', 'section2'], sorted(c.keys()))
-
- def test_subsection_keys(self):
- c = Configuration()
- c.set_default('%s.param1' % self.section, '123')
- c.set('%s.param2' % self.section, '456')
-
- self.assertEqual(
- ['param1', 'param2'], sorted(c.section(self.section).keys()))
-
- def test_subsection_items(self):
- c = Configuration()
- c.set('%s.param1' % self.section, 'value1')
- c.set_default('%s.param2' % self.section, 'value2')
-
- self.assertEqual(
- [('param1', 'value1'), ('param2', 'value2')],
- sorted(c.section(self.section).items()))
-
- def test_subsection_get(self):
- c = Configuration()
-
- c.set(self.fullparam, self.value)
-
- cs = c.section(self.section)
- self.assertEqual(self.value, cs.get(self.param))
-
- def test_getitem(self):
- c = Configuration()
- c.set(self.fullparam, self.value)
-
- self.assertEqual(self.value, c[self.fullparam])
-
- def test_subsection_getitem(self):
- c = Configuration()
- c.set(self.fullparam, self.value)
-
- cs = c.section(self.section)
-
- self.assertEqual(self.value, cs[self.param])
-
- def test_setitem(self):
- c = Configuration()
-
- c[self.fullparam] = self.value
-
- self.assertEqual(self.value, c.get(self.fullparam))
-
- def test_subsection_setitem(self):
- c = Configuration()
-
- cs = c.section(self.section)
-
- cs[self.param] = self.value
-
- self.assertEqual(self.value, c.get(self.fullparam))
-
- def test_section_in(self):
- c = Configuration()
-
- self.assertFalse(self.section in c)
-
- c.set(self.fullparam, self.value)
- self.assertTrue(self.section in c)
-
- def test_subsection_contains(self):
- c = Configuration()
-
- c.set('section1.param1', '123')
- c.set_default('section2.param2', '234')
-
- self.assertTrue('param1' in c.section('section1'))
- self.assertTrue('param2' in c.section('section2'))
- self.assertFalse('param1' in c.section('section2'))
-
- def test_returns_section_object_even_if_section_doesnot_exist(self):
- c = Configuration()
- self.assertIsNotNone(c.section('foo'))
-
- def test_template_substitution(self):
- c = Configuration()
- c.set('a', 'x')
- c.set('b', '$a')
- c.set('c', '$b')
-
- self.assertEqual('x', c.get('c'))
-
- def test_cycle_template_substitution_resolves_in_empty_string(self):
- c = Configuration()
- c.set('a', 'a$c')
- c.set('b', 'b$a')
- c.set('c', 'c$b')
-
- self.assertEqual('cba', c.get('c'))
-
- def test_getting_raw_values(self):
- c = Configuration()
-
- c.set('a', '$b')
- c.set('b', 'x')
-
- self.assertEqual('$b', c.get('a', raw=True))
-
- def test_typed_params(self):
- schema = ConfigSchema('test', '1.0', 'ini', [
- ConfigParameterSchema('param1', type='integer', section='DEFAULT')
- ])
-
- c = Configuration(schema)
-
- c.set('param1', '123')
-
- self.assertEqual(123, c.get('param1'))
-
- def test_typed_params_update(self):
- schema = ConfigSchema('test', '1.0', 'ini', [
- ConfigParameterSchema('param1', type='integer', section='DEFAULT')
- ])
-
- c = Configuration(schema)
-
- c.set('param1', '123')
-
- self.assertEqual(123, c.get('param1'))
-
- c.set('param1', '456')
-
- self.assertEqual(456, c.get('param1'))
-
- def test_type_for_unknown_param(self):
- schema = ConfigSchema('test', '1.0', 'ini', [])
-
- c = Configuration(schema)
-
- c.set('param1', '123')
-
- self.assertEqual('123', c.get('param1'))
-
- def test_typed_param_with_invalid_value_returns_string_value(self):
- schema = ConfigSchema('test', '1.0', 'ini', [
- ConfigParameterSchema('param1', type='integer', section='DEFAULT')
- ])
-
- c = Configuration(schema)
-
- c.set('param1', '123a')
-
- self.assertEqual('123a', c.get('param1'))
-
- def test_getting_typed_param_raw_value(self):
- schema = ConfigSchema('test', '1.0', 'ini', [
- ConfigParameterSchema('param1', type='integer', section='DEFAULT')
- ])
-
- c = Configuration(schema)
-
- c.set('param1', '123')
-
- self.assertEqual('123', c.get('param1', raw=True))
-
- def test_validate_returns_none_if_value_is_valid(self):
- schema = ConfigSchema('test', '1.0', 'ini', [
- ConfigParameterSchema('param1', type='integer', section='DEFAULT')
- ])
-
- c = Configuration(schema)
-
- c.set('param1', '123')
-
- self.assertIsNone(c.validate('param1'))
-
- def test_validate_returns_error_if_valid_is_invalid(self):
- schema = ConfigSchema('test', '1.0', 'ini', [
- ConfigParameterSchema('param1', type='integer', section='DEFAULT')
- ])
-
- c = Configuration(schema)
-
- c.set('param1', 'abc')
-
- self.assertTrue(isinstance(c.validate('param1'), InvalidValueError))
-
- def test_validate_returns_none_for_unknown_param(self):
- schema = ConfigSchema('test', '1.0', 'ini', [])
-
- c = Configuration(schema)
-
- c.set('param1', '123')
-
- self.assertIsNone(c.validate('param1'))
diff --git a/rubick/test_mark.py b/rubick/test_mark.py
deleted file mode 100644
index 5d69007..0000000
--- a/rubick/test_mark.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (c) 2014 Mirantis Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and#
-# limitations under the License.
-from rubick.common import Mark
-
-import unittest
-
-
-class MarkTests(unittest.TestCase):
-
- def test_creation(self):
- m = Mark('nova.conf', 3, 5)
- self.assertEqual('nova.conf', m.source)
- self.assertEqual(3, m.line)
- self.assertEqual(5, m.column)
-
- def test_merge(self):
- m1 = Mark('nova.conf', 3, 5)
- m2 = Mark('unknown', 2, 7)
-
- m = m1.merge(m2)
-
- self.assertEqual(m1.source, m.source)
- self.assertEqual(m1.line + m2.line, m.line)
- self.assertEqual(m1.column + m2.column, m.column)
diff --git a/rubick/test_type_validators.py b/rubick/test_type_validators.py
deleted file mode 100644
index d18bcd2..0000000
--- a/rubick/test_type_validators.py
+++ /dev/null
@@ -1,379 +0,0 @@
-# Copyright (c) 2014 Mirantis Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and#
-# limitations under the License.
-from rubick.common import Issue, MarkedIssue
-from rubick.schema import TypeValidatorRegistry
-
-import unittest
-
-
-class TypeValidatorTestHelper(object):
- def setUp(self):
- super(TypeValidatorTestHelper, self).setUp()
- self.validator = TypeValidatorRegistry.get_validator(self.type_name)
-
- def assertValid(self, value, type_args={}):
- self.assertNotIsInstance(
- self.validator.validate(value, **type_args), Issue)
-
- def assertInvalid(self, value, type_args={}):
- self.assertIsInstance(
- self.validator.validate(value, **type_args), Issue)
-
-
-class StringTypeValidatorTests(TypeValidatorTestHelper, unittest.TestCase):
- type_name = 'string'
-
- def test_empty_string_passes(self):
- self.assertValid('')
-
- def test_validation_always_passes(self):
- self.assertValid('foo bar')
-
- def test_should_return_same_string_if_valid(self):
- s = 'foo bar'
- self.assertEqual(s, self.validator.validate(s))
-
-
-class EnumTypeValidatorTests(TypeValidatorTestHelper, unittest.TestCase):
- type_name = 'enum'
-
- def test_listed_value(self):
- self.assertValid('foo', type_args={'values': ['foo', 'bar']})
-
- def test_unlisted_value(self):
- self.assertInvalid('baz', type_args={'values': ['foo', 'bar']})
-
- def test_with_no_values_returns_error(self):
- self.assertInvalid('foo')
-
-
-class BooleanTypeValidatorTests(TypeValidatorTestHelper, unittest.TestCase):
- type_name = 'boolean'
-
- def test_True(self):
- v = self.validator.validate('True')
- self.assertEqual(True, v)
-
- def test_False(self):
- v = self.validator.validate('False')
- self.assertEqual(False, v)
-
- def test_other_values_produce_error(self):
- self.assertInvalid('foo')
-
-
-class IntegerTypeValidatorTests(TypeValidatorTestHelper, unittest.TestCase):
- type_name = 'integer'
-
- def test_positive_values_are_valid(self):
- self.assertValid('123')
-
- def test_zero_is_valid(self):
- self.assertValid('0')
-
- def test_negative_values_are_valid(self):
- self.assertValid('-123')
-
- def test_leading_whitespace_is_ignored(self):
- self.assertValid(' 5')
-
- def test_trailing_whitespace_is_ignored(self):
- self.assertValid('7 ')
-
- def test_non_digits_are_invalid(self):
- self.assertInvalid('12a45')
-
- def test_invalid_char_error_contains_proper_column_in_mark(self):
- error = self.validator.validate('12a45')
- self.assertIsInstance(error, MarkedIssue)
- self.assertEqual(3, error.mark.column)
-
- def test_invalid_char_error_contains_proper_column_if_leading_whitespaces(
- self):
- error = self.validator.validate(' 12a45')
- self.assertIsInstance(error, MarkedIssue)
- self.assertEqual(5, error.mark.column)
-
- def test_returns_integer_if_valid(self):
- v = self.validator.validate('123')
- self.assertEqual(123, v)
-
-
-class HostAddressTypeValidatorTests(TypeValidatorTestHelper,
- unittest.TestCase):
- type_name = 'host_address'
-
- def test_ipv4_address(self):
- self.assertValid('127.0.0.1')
-
- def test_returns_address(self):
- s = '10.0.0.1'
- v = self.validator.validate(s)
- self.assertEqual(s, v)
-
- def test_value_with_less_than_4_numbers_separated_by_dots(self):
- self.assertInvalid('10.0.0')
-
- def test_ipv4_like_string_with_numbers_greater_than_255(self):
- self.assertInvalid('10.0.256.1')
-
- def test_host_name(self):
- self.assertValid('foo.bar.baz')
-
- def test_host_with_empty_parts(self):
- self.assertInvalid('.foo.bar')
- self.assertInvalid('foo..bar')
- self.assertInvalid('foo.bar.')
-
- def test_host_parts_with_invalid_chars(self):
- self.assertInvalid('foo.ba r.baz')
- self.assertInvalid('foo.x_y.bar')
-
- def test_host_with_single_host_label(self):
- self.assertValid('foo')
-
- def test_host_part_starting_with_non_letter(self):
- self.assertInvalid('123foo')
-
- def test_host_that_ends_with_a_hyphen(self):
- self.assertInvalid('foo-')
-
- def test_mark_should_point_to_incorrect_symbol(self):
- e = self.validator.validate('')
- self.assertEqual(0, e.mark.column)
-
- e = self.validator.validate('123foo')
- self.assertEqual(0, e.mark.column)
-
- e = self.validator.validate('foo-')
- self.assertEqual(3, e.mark.column)
-
- e = self.validator.validate('foo.bar.-baz')
- self.assertEqual(8, e.mark.column)
-
-
-class NetworkAddressTypeValidatorTests(TypeValidatorTestHelper,
- unittest.TestCase):
- type_name = 'network_address'
-
- def test_ipv4_network(self):
- self.assertValid('127.0.0.1/24')
-
- def test_returns_address(self):
- s = '10.0.0.1/32'
- v = self.validator.validate(s)
- self.assertEqual(s, v)
-
- def test_value_with_less_than_4_numbers_separated_by_dots(self):
- self.assertInvalid('10.0.0/24')
-
- def test_ipv4_like_string_with_numbers_greater_than_255(self):
- self.assertInvalid('10.0.256.1/24')
-
- def test_no_prefix_length(self):
- self.assertInvalid('10.0.0.0')
- self.assertInvalid('10.0.0.0/')
-
- def test_non_integer_prefix_length(self):
- self.assertInvalid('10.0.0.0/1a')
-
- def test_prefix_greater_than_32(self):
- self.assertInvalid('10.0.0.0/33')
-
-
-class NetworkMaskTypeValidatorTests(TypeValidatorTestHelper,
- unittest.TestCase):
- type_name = 'network_mask'
-
- def test_mask(self):
- self.assertValid('255.255.255.0')
-
- def test_returns_mask(self):
- s = '255.255.255.0'
- v = self.validator.validate(s)
- self.assertEqual(s, v)
-
- def test_mask_with_nonsubsequent_bits_is_invalid(self):
- self.assertInvalid('255.123.255.0')
-
- def test_invalid_format(self):
- self.assertInvalid('foo')
-
-
-class PortTypeValidatorTests(TypeValidatorTestHelper, unittest.TestCase):
- type_name = 'port'
-
- def test_empty(self):
- self.assertInvalid('')
-
- def test_positive_integer(self):
- self.assertValid('123')
-
- def test_zero_invalid(self):
- self.assertInvalid('0')
-
- def test_negatives_are_invalid(self):
- self.assertInvalid('-1')
-
- def test_values_greater_than_65535_are_invalid(self):
- self.assertInvalid('65536')
-
- def test_low_boundary_is_valid(self):
- self.assertValid('1')
-
- def test_high_boundary_is_valid(self):
- self.assertValid('65535')
-
- def test_non_digits_are_invalid(self):
- self.assertInvalid('12a5')
-
- def test_leading_and_or_trailing_whitespace_is_ignored(self):
- self.assertValid(' 123')
- self.assertValid('456 ')
- self.assertValid(' 123 ')
-
- def test_returns_integer_if_valid(self):
- v = self.validator.validate('123')
- self.assertEqual(123, v)
-
-
-class HostAndPortTypeValidatorTests(TypeValidatorTestHelper,
- unittest.TestCase):
- type_name = 'host_and_port'
-
- def test_ipv4_address(self):
- self.assertValid('127.0.0.1:80')
-
- def test_returns_address(self):
- s = '10.0.0.1:80'
- v = self.validator.validate(s)
- self.assertEqual(('10.0.0.1', 80), v)
-
- def test_value_with_less_than_4_numbers_separated_by_dots(self):
- self.assertInvalid('10.0.0:1234')
-
- def test_ipv4_like_string_with_numbers_greater_than_255(self):
- self.assertInvalid('10.0.256.1:1234')
-
- def test_no_port(self):
- self.assertInvalid('10.0.0.1')
- self.assertInvalid('10.0.0.1:')
-
- def test_port_is_not_an_integer(self):
- self.assertInvalid('10.0.0.1:abc')
-
- def test_port_is_greater_than_65535(self):
- self.assertInvalid('10.0.0.1:65536')
-
-
-class RegexTypeValidatorTests(TypeValidatorTestHelper, unittest.TestCase):
- type_name = 'regex'
-
- def test_valid_regex(self):
- self.assertValid('\d+\.\d+\.\d+\.\d+')
-
- def test_invalid_regex(self):
- self.assertInvalid('(\d+')
-
-
-class StringListTypeValidatorTests(TypeValidatorTestHelper, unittest.TestCase):
- type_name = 'string_list'
-
- def test_empty_value(self):
- v = self.validator.validate('')
- self.assertEqual([], v)
-
- def test_single_value(self):
- v = self.validator.validate(' foo bar ')
-
- self.assertIsInstance(v, list)
- self.assertEqual('foo bar', v[0])
- self.assertEqual(1, len(v))
-
- def test_list_of_values(self):
- v = self.validator.validate(' foo bar, baz ')
-
- self.assertIsInstance(v, list)
- self.assertEqual('foo bar', v[0])
- self.assertEqual('baz', v[1])
- self.assertEqual(2, len(v))
-
-
-class StringDictTypeValidatorTests(TypeValidatorTestHelper, unittest.TestCase):
- type_name = 'string_dict'
-
- def test_empty_value(self):
- v = self.validator.validate('')
- self.assertEqual({}, v)
-
- def test_single_value(self):
- v = self.validator.validate(' foo: bar ')
-
- self.assertIsInstance(v, dict)
- self.assertEqual('bar', v['foo'])
- self.assertEqual(1, len(v))
-
- def test_list_of_values(self):
- v = self.validator.validate(' foo: bar, baz: 123 ')
-
- self.assertIsInstance(v, dict)
- self.assertEqual('bar', v['foo'])
- self.assertEqual('123', v['baz'])
- self.assertEqual(2, len(v))
-
-
-class RabbitmqBindValidatorTest(TypeValidatorTestHelper, unittest.TestCase):
- type_name = 'rabbitmq_bind'
-
- def test_empty_value_is_an_error(self):
- self.assertInvalid('')
-
- def test_integer(self):
- v = self.validator.validate('123')
-
- self.assertEqual(('0.0.0.0', 123), v)
-
- def test_integer_outside_port_range(self):
- self.assertInvalid('65536')
-
- def test_host_port(self):
- v = self.validator.validate('{"127.0.0.1",8080}')
-
- self.assertEqual(('127.0.0.1', 8080), v)
-
-
-class RabbitmqListValidatorTest(TypeValidatorTestHelper, unittest.TestCase):
- type_name = 'rabbitmq_bind_list'
-
- def test_empty(self):
- self.assertInvalid('')
-
- def test_empty_list(self):
- v = self.validator.validate('[]')
-
- self.assertEqual([], v)
-
- def test_single_entry(self):
- v = self.validator.validate('[123]')
-
- self.assertEqual([('0.0.0.0', 123)], v)
-
- def test_multiple_entries(self):
- v = self.validator.validate('[1080,{"localhost",8080}]')
-
- self.assertEqual([('0.0.0.0', 1080), ('localhost', 8080)], v)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/rubick/test_version.py b/rubick/test_version.py
deleted file mode 100644
index 7900f3a..0000000
--- a/rubick/test_version.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright (c) 2014 Mirantis Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and#
-# limitations under the License.
-from rubick.common import Version
-
-import unittest
-
-
-class VersionTests(unittest.TestCase):
-
- def test_creation_from_components(self):
- v = Version(1, 3, 7)
- self.assertEqual(1, v.major)
- self.assertEqual(3, v.minor)
- self.assertEqual(7, v.maintenance)
-
- def test_creation_from_string(self):
- v = Version('1.2.12')
- self.assertEqual(1, v.major)
- self.assertEqual(2, v.minor)
- self.assertEqual(12, v.maintenance)
-
- def test_creation_from_string_with_less_parts(self):
- v = Version('1.2')
- self.assertEqual(1, v.major)
- self.assertEqual(2, v.minor)
- self.assertEqual(0, v.maintenance)
-
- v = Version('12')
- self.assertEqual(12, v.major)
- self.assertEqual(0, v.minor)
- self.assertEqual(0, v.maintenance)
-
- def test_creation_from_other_version(self):
- v = Version('1.2.3')
- v2 = Version(v)
- self.assertEqual(1, v2.major)
- self.assertEqual(2, v2.minor)
- self.assertEqual(3, v2.maintenance)
-
- def test_equility(self):
- v1 = Version('1.2.3')
- v2 = Version(1, 2, 3)
- v3 = Version(1, 2, 4)
-
- self.assertTrue(v1 == v2)
- self.assertFalse(v1 == v3)
-
- def test_non_equility(self):
- v1 = Version('1.2.3')
- v2 = Version(1, 2, 3)
- v3 = Version(1, 2, 4)
-
- self.assertFalse(v1 != v2)
- self.assertTrue(v1 != v3)
-
- def test_comparision(self):
- v1 = Version('1.2.3')
- v2 = Version(1, 1, 5)
-
- self.assertTrue(v1 > v2)
- self.assertFalse(v1 < v2)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/rubick/utils.py b/rubick/utils.py
deleted file mode 100644
index ac969cd..0000000
--- a/rubick/utils.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (c) 2014 Mirantis Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and#
-# limitations under the License.
-import collections
-import functools
-
-
-class memoized(object):
-
- '''Decorator. Caches a function's return value each time it is called.
- If called later with the same arguments, the cached value is returned
- (not reevaluated).
- '''
-
- def __init__(self, func):
- self.func = func
- self.cache = {}
-
- def __call__(self, *args):
- if not isinstance(args, collections.Hashable):
- # uncacheable. a list, for instance.
- # better to not cache than blow up.
- return self.func(*args)
- if args in self.cache:
- return self.cache[args]
- else:
- value = self.func(*args)
- self.cache[args] = value
- return value
-
- def __repr__(self):
- '''Return the function's docstring.'''
- return self.func.__doc__
-
- def __get__(self, obj, objtype):
- '''Support instance methods.'''
- return functools.partial(self.__call__, obj)
diff --git a/setup.cfg b/setup.cfg
deleted file mode 100644
index 5573bae..0000000
--- a/setup.cfg
+++ /dev/null
@@ -1,22 +0,0 @@
-[metadata]
-name = rubick
-version = 1.0
-summary = OpenStack configuration inspector
-description-file =
- README.md
-author = MirantisLabs
-author-email = labs-all@mirantis.com
-home-page = http://mirantis.com/
-classifier =
- Environment :: OpenStack
- Intended Audience :: Information Technology
- Intended Audience :: System Administrators
- License :: OSI Approved :: Apache Software License
- Operating System :: POSIX :: Linux
- Programming Language :: Python
- Programming Language :: Python :: 2.7
-
-[files]
-packages =
- rubick
- joker
diff --git a/setup.py b/setup.py
deleted file mode 100644
index 457ba79..0000000
--- a/setup.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (c) 2014 Mirantis Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and#
-# limitations under the License.
-import setuptools
-
-setuptools.setup()
diff --git a/test-requirements.txt b/test-requirements.txt
deleted file mode 100644
index 5e1c9ce..0000000
--- a/test-requirements.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-pep8==1.4.5
-pyflakes==0.7.2
-flake8==2.0
-hacking>=0.5.6,<0.8
-
-coverage
-python-subunit
-testrepository>=0.0.17
-testtools>=0.9.32
diff --git a/tox.ini b/tox.ini
deleted file mode 100644
index 8982f0d..0000000
--- a/tox.ini
+++ /dev/null
@@ -1,40 +0,0 @@
-[tox]
-minversion = 1.6
-envlist = py26,py27,py33,pep8
-skipsdist = True
-
-[testenv]
-install_command = pip install -U {opts} {packages}
-setenv = VIRTUAL_ENV={envdir}
-deps = -r{toxinidir}/requirements.txt
- -r{toxinidir}/test-requirements.txt
-commands =
- python setup.py testr --slowest --testr-args='{posargs}'
-
-[tox:jenkins]
-sitepackages = True
-downloadcache = ~/cache/pip
-
-[testenv:pep8]
-sitepackages = False
-commands =
- flake8 {posargs}
-
-[testenv:cover]
-# Also do not run test_coverage_ext tests while gathering coverage as those
-# tests conflict with coverage.
-setenv = VIRTUAL_ENV={envdir}
-commands =
- python setup.py testr --coverage \
- --testr-args='^(?!.*test.*coverage).*$'
-
-[testenv:venv]
-commands = {posargs}
-
-[flake8]
-# TODO(ogelbukh): enforce H306
-# We will be ignoring line length limit until we apply for incubation
-# E501: line too long
-# H306: imports not in alphabetical order
-ignore = E501,H306
-exclude = .venv,.git,.tox,dist,lib/python*,*egg,build
diff --git a/vagrant/cookbooks/rubick/recipes/default.rb b/vagrant/cookbooks/rubick/recipes/default.rb
deleted file mode 100644
index 27f491c..0000000
--- a/vagrant/cookbooks/rubick/recipes/default.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-package 'build-essential'
-package 'mongodb-server'
-package 'redis-server'
-package 'python-pip'
-package 'tmux'
-
-bash 'Install python dependencies' do
- code 'pip install -r requirements.txt'
- cwd '/vagrant'
-end
-
-bash 'Run application' do
- code <<-EOS
- if ! tmux has-session -t dev; then
- tmux new-session -d -s dev "honcho start"
- fi
- EOS
- user 'vagrant'
- cwd '/vagrant'
-end
-