Example #1
0
def given_server_in_cloud(step, mbeh):
    n = getattr(world, 'cloud_server', None)
    if n:
        n.destroy()
    cloud = Cloud()
    LOG.info('Create node in cloud')
    if mbeh == 'mbeh1':
        image = images(CONF.main.platform).filter({'dist': get_scalr_dist_name(CONF.main.dist), 'behavior':'mysql2'}).first()
    elif mbeh == 'mbeh2':
        image = images(CONF.main.platform).filter({'dist': get_scalr_dist_name(CONF.main.dist), 'behavior':'www'}).first()
    LOG.debug('Use image: %s' % image)
    node = cloud.create_node(image=image.keys()[0], userdata='scm-branch=%s' % CONF.main.branch)
    setattr(world, 'cloud_server', node)
Example #2
0
def run_server_in_cloud(cloud: Cloud, user_data: bool = False) -> ExtendedNode:
    LOG.info(f'Create node in cloud. User_data: {user_data}')
    # Convert dict to formatted str
    platform = CONF.feature.platform
    if user_data:
        dict_to_str = lambda d: ';'.join(['='.join([key, value]) if value else key for key, value in d.iteritems()])
        user_data = dict_to_str(USER_DATA[platform.cloud_family])
        if platform.is_gce:
            user_data = {'scalr': user_data}
    else:
        user_data = None
    # Create node
    image = None
    if CONF.feature.dist.is_windows or CONF.feature.dist.id == 'coreos':
        table = tables('images-clean')
        search_cond = dict(
            dist=CONF.feature.dist.id,
            platform=platform.name)
        image = table.filter(search_cond).first().keys()[0].encode('ascii', 'ignore')
    node = cloud.create_node(userdata=user_data, image=image)
    LOG.info(f'Cloud server successfully created with name: "{node.name}"')
    # if platform.is_cloudstack:
    #     # Run command
    #     out = node.run('wget -qO- ifconfig.me/ip')
    #     if not out.std_err:
    #         ip_address = out[0].rstrip("\n")
    #         LOG.info('Received external ip address of the node. IP:%s' % ip_address)
    #         setattr(world, 'ip', ip_address)
    #     else:
    #         raise AssertionError("Can't get node external ip address. Original error: %s" % out.std_err)
    #     # Open port, set firewall rule
    #     new_port = world.cloud.open_port(node, 8013, ip=ip_address)
    #     setattr(world, 'forwarded_port', new_port)
    #     if not new_port == 8013:
    #         raise AssertionError('Import will failed, because opened port is not 8013, '
    #                              'an installed port is: %s' % new_port)
    return node