Beispiel #1
0
    def handle(self, *args, **options):
        apply_options(options)
        ensure_root()
        if len(args) != 1:
            print u'Pass only the zone name.'
            return 1
        zone = args[0]
        ensure_replica_sets_exist()
        replica_set = models.ReplicaSet.objects.get(zone=zone)
        old_instances = replica_set.transinstance_set.order_by('-port').all()
        if len(old_instances):
            old_instance = old_instances[0]
        else:
            if replica_set.zone == models.ReplicaSet.ZONE_WHAT:
                zero_port = 9090
                zero_peer_port = 21412
            elif replica_set.zone == models.ReplicaSet.ZONE_BIBLIOTIK:
                zero_port = 10090
                zero_peer_port = 22412
            elif replica_set.zone == models.ReplicaSet.ZONE_MYANONAMOUSE:
                zero_port = 11090
                zero_peer_port = 23412
            else:
                raise Exception('Unknown zone')
            old_instance = models.TransInstance(
                replica_set=replica_set,
                name=u'{0}00'.format(replica_set.zone
                                     .replace('.cd', '')
                                     .replace('.org', '')
                                     .replace('.net', '')
                                     .replace('.me', '')
                                     .replace('.ch', '')),
                host='127.0.0.1',
                port=zero_port,
                peer_port=zero_peer_port,
                username='******',
                password=settings.TRANSMISSION_PASSWORD,
            )
        new_instance = models.TransInstance(
            replica_set=old_instance.replica_set,
            name=u'{0}{1:02}'.format(old_instance.name[:-2], int(old_instance.name[-2:]) + 1),
            host=old_instance.host,
            port=old_instance.port + 1,
            peer_port=old_instance.peer_port + 1,
            username=old_instance.username,
            password=settings.TRANSMISSION_PASSWORD,
        )
        print new_instance.full_description()
        print u'Is this OK?'
        confirm()
        with transaction.atomic():
            instance_manager = TransInstanceManager(new_instance)
            instance_manager.sync()
            new_instance.save()

        print 'Starting daemon...'
        instance_manager.start_daemon()

        print u'Instance synced and saved.'
    def handle(self, *args, **options):
        ensure_root()
        if len(args) != 1:
            print u'Pass only the zone name.'
            return
        zone = args[0]
        try:
            replica_set = models.ReplicaSet.objects.get(zone=zone)
        except models.ReplicaSet.DoesNotExist:
            print u'There is no replica set with the name {0}. I will create one.'.format(args[0])
            confirm()
            replica_set = models.ReplicaSet(
                zone=zone,
                name='master',
            )
            replica_set.save()
        old_instances = replica_set.transinstance_set.order_by('-port').all()
        if len(old_instances):
            old_instance = old_instances[0]
        else:
            old_instance = models.TransInstance(
                replica_set=replica_set,
                name=u'{0}00'.format(replica_set.zone),
                host='127.0.0.1',
                port=9090,
                peer_port=51412,
                username='******',
                password=settings.TRANSMISSION_PASSWORD,
            )
        new_instance = models.TransInstance(
            replica_set=old_instance.replica_set,
            name=u'{0}{1:02}'.format(old_instance.name[:-2], int(old_instance.name[-2:]) + 1),
            host=old_instance.host,
            port=old_instance.port + 1,
            peer_port=old_instance.peer_port + 1,
            username=old_instance.username,
            password=settings.TRANSMISSION_PASSWORD,
        )
        print new_instance.full_description()
        print u'Is this OK?'
        confirm()
        with transaction.atomic():
            instance_manager = TransInstanceManager(new_instance)
            instance_manager.sync()
            new_instance.save()

        print 'Starting daemon...'
        instance_manager.start_daemon()

        print u'Instance synced and saved.'
 def handle(self, *args, **options):
     if os.geteuid() != 0:
         raise CommandError('You have to call this program as root.')
     for instance in models.TransInstance.objects.order_by('name'):
         manager = TransInstanceManager(instance)
         manager.start_daemon()