Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
 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))
Пример #4
0
    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)
Пример #5
0
    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)
Пример #6
0
 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, ))
Пример #7
0
    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)
Пример #8
0
    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)
Пример #9
0
        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)
Пример #10
0
 def setUp(self):
     feat.initial_data(SomeDocument)
     return SimulationTest.setUp(self)
Пример #11
0
    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):
Пример #12
0
    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',
Пример #13
0

@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):
Пример #14
0
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