Ejemplo n.º 1
0
def process_next_creation():
    if len(nodes_recently_updated) == 0:
        return
    next_uid = nodes_recently_updated.popleft()
    logging.info("Processing uid: %s" % next_uid)
    account = Account(next_uid)
    if not account.node_created.get():
        if account.unconf_minutes.get() < MIN_TIME:
            account.add_msg('Node creation failed! A minimum of %d minutes need to be purchased at a time. You need %d more minutes.' % (MIN_TIME, MIN_TIME - account.unconf_minutes.get()))
            return
        if account.destroyed.get():
            account.add_msg('Node creation failed as it has already been destroyed, please use a new account and contact [email protected] to get your coins back.')
            return
        account.add_msg('Creating server now. ETA 10-20 minutes.')
        dcid = random.choice([1, 5, 7])  # NJ, LA, Amsterdam

        try:
            res = requests.post("https://api.vultr.com/v1/server/create?api_key=%s" % vultr_api_key.get(),
                                data={"DCID": dcid, "VPSPLANID": 87, "OSID": 192, "SSHKEYID": ssh_management_key.get(),
                                      "label": str(account.uid), "enable_private_network": 'yes',
                                      'enable_ipv6 string': 'yes'})
        except Exception as e:
            nodes_recently_updated.prepend(next_uid)
            logging.error('Attempted to create server / Exception: %s' % repr(e))

        if res.status_code == 200:  # accepted
            response = res.json()
            subid = response['SUBID']
            logging.info(response)
            account.creation_ts.set(int(time.time()))
            account.droplet_id.set(subid)
            account.node_created.set(True)
            account.dcid.set(dcid)
            droplets_to_configure.add(subid, account.creation_ts.get())
            droplet_to_uid[subid] = account.uid
            active_servers.add(subid)
            account.add_msg('Server created successfully! Server ID %s' % (account.droplet_id.get(),))
            account.tweet_creation()
            node_creation_issues.set(False)
        else:
            logging.error('Server creation failed! Status %d' % res.status_code)
            if res.status_code == 412 and res.content == NODE_CREATION_LIMIT_MSG:
                node_creation_issues.set(True)
            logging.error(res.content)
            nodes_recently_updated.append(next_uid)
            account.add_msg('Server creation failed... will keep retrying')
            return 'CREATION_FAILED'
            # import pdb; pdb.set_trace()
    else:
        logging.warning('Account already has a node created.')
        print(account.node_created.get())
Ejemplo n.º 2
0
if args.ssh_management_key != '':
    ssh_management_key.set(args.ssh_management_key)

if args.vultr_api_key != '':
    vultr_api_key.set(args.vultr_api_key)

if args.xpub != '':
    xpub.set(args.xpub)

if args.test_uid_create_node != '':
    uid = process_uid(args.test_uid_create_node)
    account = Account(uid)
    account.node_created.set(False)
    account.unconf_minutes.incr(MIN_TIME + 1)
    nodes_recently_updated.prepend(uid)
    process_next_creation()

if args.msgs_for_uid != '':
    print(Account(process_uid(args.msgs_for_uid)).get_msgs(100000))

if args.configure_droplet != '':
    droplets_to_configure.add(args.configure_droplet, 0)
    configure_droplet(args.configure_droplet)

if args.create_startup_script != '':
    raise Exception('Unimplemented')

if args.show_account != '':
    uids = [args.show_account.encode(), process_uid(args.show_account)]
    for uid in uids: