def checker():
    request = Request()
    
    token = keystone_api.simple_auth(settings.ADMIN_USER_NAME,settings.ADMIN_PASSWORD)
    
    _set_request_data(request,token)
    
    
    request.ouser = User()
    
    request.ouser = User(id=request.session['user_id'],
                        token=request.session['token'],
                        name=request.session['user_name'],
                        tenant_id=request.session['tenant_id'],
                        tenant_name=request.session['tenant'],
                        service_catalog=request.session['serviceCatalog'],
                        roles=request.session['roles'])
    
    instances = nova_api.server_list(request,all_tenants=True)
    
    flavors = nova_api.flavor_list(request)
    full_flavors = SortedDict([(str(flavor.id), flavor) for flavor in flavors])
    for instance in instances:
        _extra_instance(request, instance, detailed=True, full_flavors=full_flavors)
    
    ins_list = list()
    for i in instances:
        ins = dict()
        ins['ip_address'] = i.addresses
        ins['name'] = i.name
        ins['power_state'] = i.power_state
        ins['id'] = i.id
        ins['physical_host'] = i.physical_host
        ins['full_flavor'] = i.full_flavor.id
        ins_list.append(ins)
    #return ins_list

    instance_id = '1e79faf8-7522-42b0-8034-9a108cf11ee2'
    
    snapshots = nova_api.snapshot_list(request, detailed=True)
    for snapshot in snapshots:
        src_server_id = getattr(snapshot,'server',{}).get('id',None)
        if src_server_id == instance_id:
            image_id = snapshot.id
            break
    
    if src_server_id:
        server_instance = nova_api.server_get(request,src_server_id)
        
        flavor_id = server_instance.flavor.get('id')
        name = server_instance.name + '-lb'
        
        second_instance = nova_api.server_create(request,name,image_id,flavor_id,key_name=None,user_data=None)
        
        lb_first_instance = server_instance
        lb_second_instance = second_instance
        
    else:
        print "%s has no snapshot!" % instance_id
def _extra_instance(request, instance, detailed=False, full_flavors=None):
    #instance.ips = utils.get_ips(instance)  #TODO: show IP by template tag
    
    # to get size
    if full_flavors is None:
        flavors = nova_api.flavor_list(request)
        full_flavors = SortedDict([(str(flavor.id), flavor) for flavor in flavors])
    instance.full_flavor = full_flavors[instance.flavor['id']]
    #instance.size = utils.get_size(instance)
    instance.is_ajax_stating = False  # flag to tell state updating by AJAX, default as True
    
    if detailed:
        instance.power_state = settings.POWER_STATES.get(getattr(instance, "OS-EXT-STS:power_state", 0), '')
        instance.task = getattr(instance, 'OS-EXT-STS:task_state', '')
        instance.physical_host = getattr(instance,'OS-EXT-SRV-ATTR:host','')
        #instance.ips = utils.get_ips(instance)  #TODO: show IP by template tag
        instance.is_transitionary = instance.status and instance.status.upper() not in settings.FINAL_STATUS
        instance.loading_status = instance.task or instance.is_transitionary
        if instance.created: # it is not datetime type :(
            time_str = instance.created
            instance.created = time_str.replace('T', ' ').replace('Z', '')
        
    return instance