Example #1
0
def acl(request, tenant_id, container_name):

    form, handled = ContainerAcl.maybe_handle(request)
    if handled:
        return handled

    remove_form, handled = ContainerAclRemove.maybe_handle(request)
    if handled:
        return handled

    container = api.swift_get_container(request, container_name)
    read_ref, read_groups, write_ref, write_groups = [],[],[],[]
    read_acl, write_acl = '', ''
    for h,v in container.headers:
        if 'x-container-read' == h.lower():
            v = clean_acl('X-Container-Read', v)
            read_ref, read_groups = parse_acl(v)
            read_acl = v
        if 'x-container-write' == h.lower():
            v = clean_acl('X-Container-Write', v)
            write_ref, write_groups = parse_acl(v)
            write_acl = v
    #if container.headers.get('x-container-read'):
    #   ref, groups = utils.parse_acl(container.headers.get('x-container-read'))
    #if container.headers.get('x-container-write'):
    #   ref, groups = utils.parse_acl(container.headers.get('x-container-write'))

    """
    ref, groups = parse_acl('test:test,hoge,.r:*')
    read_ref, read_groups = ref, groups 
    write_ref, write_groups = ref, groups 
    """

    return shortcuts.render_to_response(
    'django_openstack/dash/containers/acl.html', {
	'container_name' : container_name,
	'container' : container,
	'acl_form' : form,
        'remove_form' : remove_form,
        'read_acl_ref' : read_ref,
        'read_acl_groups' : read_groups,
        'write_acl_ref' : write_ref,
        'write_acl_groups' : write_groups,
        'write_acl' : write_acl,
        'read_acl' : read_acl
	}, context_instance=template.RequestContext(request))
Example #2
0
    def handle(self, request, data):


        container_name = data['container_name']
        acl_type = data['acl_type']

        if acl_type == "1":
           type = 'X-Container-Read'
           acl_value = data.get('read_acl', '')
        elif acl_type == "0":
           type = 'X-Container-Write'
           acl_value = data.get('write_acl', '')


        # clean and parse acl
        try:
            acl = clean_acl(type, data['acl_add'])
            acl_orig = clean_acl(type, acl_value)
            ref_add, group_add = parse_acl(acl)
            ref_orig, group_orig = parse_acl(acl_orig)
        except ValueError, e:
            messages.error(request, 'ACL value is invalid %s' % str(e))
            print str(e)
            return
Example #3
0
    def handle(self, request, data):
        header = data['header_name']
        container_name = data['container_name']
        acl_type = data['acl_type']
        acl_value = data['acl_value']

        if acl_type == "read":
            type = 'X-Container-Read'
        elif acl_type == "write":
            type = 'X-Container-Write'
        else:
            pass
        # clean and parse acl
        try:
            acl = clean_acl(type, acl_value)
            refs, groups = parse_acl(acl)
        except ValueError, e:
            messages.error(request, 'ACL value is invalid %s' % str(e))
            return None
Example #4
0
    remove_form, handled = ContainerAclRemove.maybe_handle(request)
    if handled:
        return handled
   
    try: 
        container = api.swift_get_container(request, container_name)
    except ResponseError, e:
        messages.error(request, 'Unable to retrive ACL data. \
                       Perhaps you do not have right permission : %s'  % str(e))
        return shortcuts.redirect('dash_containers', tenant_id)
    read_ref, read_groups, write_ref, write_groups = [],[],[],[]
    read_acl, write_acl = '', ''
    for h,v in container.headers:
        if 'x-container-read' == h.lower():
            v = clean_acl('X-Container-Read', v)
            read_ref, read_groups = parse_acl(v)
            read_acl = v
        if 'x-container-write' == h.lower():
            v = clean_acl('X-Container-Write', v)
            write_ref, write_groups = parse_acl(v)
            write_acl = v
    #if container.headers.get('x-container-read'):
    #   ref, groups = utils.parse_acl(container.headers.get('x-container-read'))
    #if container.headers.get('x-container-write'):
    #   ref, groups = utils.parse_acl(container.headers.get('x-container-write'))

    #ref, groups = parse_acl('test:test,hoge,.r:*')
    #read_ref, read_groups = ref, groups 
    #write_ref, write_groups = ref, groups 
Example #5
0
 def test_clean_acl(self):
     acl = 'item,       item'
     clean_1 = clean_acl('x-container-read', acl)
     self.assertEqual(clean_1, 'item,item')
     clean_2 = clean_acl('X-Container-Write', acl)
     self.assertEqual(clean_2, 'item,item')
Example #6
0
 def test_clean_acl_ref_2(self):
     acl = '   .r:*,  bob   '
     clean_1 = clean_acl('x-container-read', acl)
     self.assertEqual(clean_1, '.r:*,bob')
     self.assertRaises(ValueError, clean_acl, 'X-Container-Write', acl)
Example #7
0
 def test_clean_acl_ref_5(self):
     acl = '.r:*domain.com'
     clean_1 = clean_acl('x-container-read', acl)
     self.assertEqual(clean_1, '.r:domain.com')
Example #8
0
 def test_clean_acl(self):
     acl = 'item,       item'
     clean_1 = clean_acl('x-container-read', acl)
     self.assertEqual(clean_1, 'item,item')
     clean_2 = clean_acl('X-Container-Write', acl)
     self.assertEqual(clean_2, 'item,item')
Example #9
0
 def test_clean_acl_ref_2(self):
     acl = '   .r:*,  bob   '
     clean_1 = clean_acl('x-container-read', acl)
     self.assertEqual(clean_1, '.r:*,bob')
     self.assertRaises(ValueError, clean_acl, 'X-Container-Write', acl)
Example #10
0
 def test_clean_acl_ref_5(self):
     acl = '.r:*domain.com'
     clean_1 = clean_acl('x-container-read', acl)
     self.assertEqual(clean_1, '.r:domain.com')