def setUp(self): config = shard_agent.ShardAgentConfiguration( doc_id = u'test-config', hosts_per_shard = 2) feat.initial_data(config) self.override_config('shard_agent', config) return common.SimulationTest.setUp(self)
def setUp(self): config = export_agent.ExportAgentConfiguration( doc_id = 'test-config', notification_period = 1) feat.initial_data(config) self.override_config('export_agent', config) return common.SimulationTest.setUp(self)
def testRevertingDocuments(self): old = tools.get_current_initials() feat.initial_data(SomeDocument) current = tools.get_current_initials() self.assertEqual(len(old) + 1, len(current)) tools.reset_documents(old) current = tools.get_current_initials() self.assertEqual(len(old), len(current))
def setUp(self): config = export_agent.ExportAgentConfiguration( doc_id="test-export-config", sitename="testing_site", notification_period=1 ) feat.initial_data(config) self.override_config("export_agent", config) config = shard_agent.ShardAgentConfiguration(doc_id="test-shard-config", hosts_per_shard=2) feat.initial_data(config) self.override_config("shard_agent", config) return common.SimulationTest.setUp(self)
def testMigrating(self): serialization.register(VersionedTest1) feat.initial_data(VersionedTest1) yield tools.push_initial_data(self.connection) doc = yield self.connection.get_document('testdoc') self.assertEqual('default', doc.field1) serialization.register(VersionedTest2) yield tools.migration_script(self.connection) doc = yield self.connection.get_document('testdoc') self.assertEqual('default upgraded', doc.field1)
def run_and_configure_db(self): yield self.db_process.restart() c = self.db_process.get_config() db_host, db_port, db_name = c['host'], c['port'], 'test' db = database.Database(db_host, db_port, db_name) self.db = db.get_connection() yield tools.create_db(self.db) # disable nagios integration for the purpose of this test from feat.agents.alert import alert_agent alert_config = alert_agent.AlertAgentConfiguration(enabled=False) feat.initial_data(alert_config) yield tools.push_initial_data(self.db) defer.returnValue((db_host, db_port, db_name, ))
def testDefiningDocument(self): feat.initial_data(SomeDocument) feat.initial_data( SomeDocument(doc_id=u'special_id', field1=u'special')) yield tools.push_initial_data(self.connection) special = yield self.connection.get_document('special_id') self.assertIsInstance(special, SomeDocument) self.assertEqual('special', special.field1) ids = self.db._documents.keys() other_id = filter(lambda x: x not in ('special_id', "_design/feat", "_design/featjs"), ids)[0] normal = yield self.connection.get_document(other_id) self.assertEqual('default', normal.field1)
def testMigrating(self): serialization.register(VersionedTest1) feat.initial_data(VersionedTest1) yield tools.push_initial_data(self.connection) doc = yield self.connection.get_document('testdoc') self.assertEqual('default', doc.field1) serialization.register(VersionedTest2) migration.register(SimpleMigration(type_name=VersionedTest2.type_name, source_ver=1, target_ver=2)) yield tools.migration_script(self.connection) doc = yield self.connection.get_document('testdoc') self.assertEqual('default upgraded', doc.field1)
Removes all steps with "locally" strategy for the given shard. """ state.steps = [ x for x in state.steps if not (x.strategy == Migratability.locally and x.recipient.route == shard) ] return self ### private ### @replay.immutable def _ensure_analyzed(self, state, method): if not state.analyzed: raise ValueError("Before calling %s you should call analyze()" % method) @replay.side_effect def _generate_ident(self): return str(uuid.uuid1()) @feat.register_restorator class ExportAgentConfiguration(document.Document): type_name = "export_agent_conf" document.field("doc_id", u"export_agent_conf", "_id") document.field("notification_period", 12) document.field("default_host_cmd", "/bin/true") document.field("sitename", "local") feat.initial_data(ExportAgentConfiguration)
def setUp(self): feat.initial_data(SomeDocument) return SimulationTest.setUp(self)
formatable.field('slaves', [(u'127.0.0.1', 53)]) @feat.register_restorator class DNSAgentConfiguration(document.Document): type_name = 'dns_agent_conf' document.field('doc_id', u'dns_agent_conf', '_id') document.field('ns_ttl', DEFAULT_NS_TTL) document.field('aa_ttl', DEFAULT_AA_TTL) document.field('ns', unicode()) document.field('suffix', unicode()) document.field('notify', NotifyConfiguration()) feat.initial_data(DNSAgentConfiguration) @feat.register_descriptor("dns_agent") class Descriptor(descriptor.Descriptor): descriptor.field('ns', None) descriptor.field('ns_ttl', None) descriptor.field('aa_ttl', None) descriptor.field('suffix', None) descriptor.field('notify', None) @feat.register_restorator class DnsName(document.Document):
king - a shard being the entry point (lobby binding) peasant - normal shard ''' (king, peasant, ) = range(2) @feat.register_restorator class ShardAgentConfiguration(document.Document): type_name = 'shard_agent_conf' document.field('doc_id', u'shard_agent_conf', '_id') document.field('hosts_per_shard', 10) document.field('neighbours', 3) feat.initial_data(ShardAgentConfiguration) @feat.register_agent('shard_agent') class ShardAgent(agent.BaseAgent, notifier.AgentMixin, resource.AgentMixin, host.SpecialHostPartnerMixin): partners_class = Partners restart_strategy = monitor.RestartStrategy.local @replay.mutable def initiate(self, state): config = state.medium.get_configuration() state.resources.define('hosts',
@feat.register_restorator class AlertAgentConfiguration(document.Document): type_name = 'alert_agent_conf' document.field('doc_id', u'alert_agent_conf', '_id') document.field('enabled', True) document.field('monitor', u'')#u'monitor01.bcn.fluendo.net') document.field('config_file', u'/etc/nagios/send_nsca.cfg') document.field('send_nsca', u'/usr/sbin/send_nsca') document.field('config_header', unicode(header)) document.field('service_template', unicode(service_template)) feat.initial_data(AlertAgentConfiguration) @feat.register_restorator class ReceivedAlerts(formatable.Formatable): formatable.field('received_count', 0) formatable.field('name', None) formatable.field('agent_id', None) formatable.field('severity', None) formatable.field('hostname', None) formatable.field('status_info', None) @feat.register_agent('alert_agent') class AlertAgent(agent.BaseAgent):
class MonitorAgentConfiguration(document.Document): type_name = 'monitor_agent_conf' document.field('doc_id', u'monitor_agent_conf', '_id') document.field('heartbeat_period', DEFAULT_HEARTBEAT_PERIOD) document.field('heartbeat_death_skips', DEFAULT_DEATH_SKIPS) document.field('heartbeat_dying_skips', DEFAULT_DYING_SKIPS) document.field('control_period', DEFAULT_CONTROL_PERIOD) document.field('notification_period', DEFAULT_NOTIFICATION_PERIOD) document.field('enable_quarantine', True) document.field('host_quarantine_length', DEFAULT_HOST_QUARANTINE_LENGTH) document.field('self_quarantine_length', DEFAULT_SELF_QUARANTINE_LENGTH) document.field('neighbours_check_period', DEFAULT_NEIGHBOURS_CHECK_PERIOD) feat.initial_data(MonitorAgentConfiguration) Descriptor = monitor.Descriptor @feat.register_agent('monitor_agent') class MonitorAgent(agent.BaseAgent, sender.AgentMixin, host.SpecialHostPartnerMixin): implements(shard.IShardNotificationHandler, IAssistant, ICoroner, IMonitorAgent) partners_class = Partners restart_strategy = RestartStrategy.monitor