示例#1
0
def get_member_users(request):
    LOG.info("---------- members -------------")
    users = User.objects.all()
    member_users = []
    for user in users:
        try:
            keystone_user_id = UserDataCenter.objects.get(user_id=user.id).keystone_user_id
            tenant_uuid = UserDataCenter.objects.get(user_id=user.id).tenant_uuid
        except:
            continue
        #LOG.info(keystone_user_id)
        #LOG.info(tenant_uuid)
        rc = create_rc_by_dc(DataCenter.objects.all()[0])
        try:
            user_roles = keystone.roles_for_user(rc, keystone_user_id, tenant_uuid)
        except:
            continue
        system = False
        security = False
        audit = False
        for user_role in user_roles:
            if user_role.name == "system":
                system = True
                break
            if user_role.name == "audit":
                audit = True
                break
            if user_role.name == "security":
                security = True
                break
        if not system and not security and not audit and not user.is_superuser:
            member_users.append(user)
    LOG.info(member_users)
    serializer = UserSerializer(member_users, many=True)
    return Response(serializer.data)
示例#2
0
def add_user_role(keystone_user, role, user_tenant_id):

    LOG.info("ddddddddd")
    datacenter = DataCenter.get_default()
    rc = create_rc_by_dc(datacenter)
    LOG.info("********* keystone_user is *********" + str(keystone_user))
    LOG.info("********* role is *********" + str(role))
    LOG.info("********* user_tenant_id is *********" + str(user_tenant_id))
    # get user_id
    users = keystone.user_list(rc, project=user_tenant_id)
    LOG.info("******* users are ******" + str(users))
    user_id = None
    for u in users:
        if u.username == keystone_user:
            user_id = u.id
    LOG.info("****** user_id is *********" + str(user_id))

    role_id = None
    roles = keystone.role_list(rc)
    for r in roles:
        if r.name == role:
            role_id = r.id
    LOG.info("******** role_id is ********" + str(role_id))
    try:
        keystone.add_tenant_user_role(rc, project=user_tenant_id, user=user_id,
                                      role=role_id)
    except:
        pass
    return False
def user_role(request, udc_id):
    UDC = UserDataCenter.objects.get(pk=udc_id)
    LOG.info(UDC)
    LOG.info("4")
    keystone_user_id = UDC.keystone_user_id
    LOG.info("4")
    tenant_uuid = UDC.tenant_uuid
    LOG.info("4")
    rc = create_rc_by_dc(DataCenter.objects.all()[0])
    LOG.info("4")
    user_roles = keystone.roles_for_user(rc, keystone_user_id, tenant_uuid)
    LOG.info("4")
    for user_role in user_roles:
        if user_role.name == "system":
            response = "system"
            break
        if user_role.name == "security":
            response = "security"
            break
        if user_role.name == "audit":
            response = "audit"
            break
        if user_role.name == "_member_":
            response = "member"
            break
    return response
def change_user_keystone_passwd(user_id, username, tenant_id, new_passwd):

    datacenter = DataCenter.get_default()
    rc = create_rc_by_dc(datacenter)
    users = keystone.user_list(rc, project=tenant_id)
    LOG.info("*** rc is ***" + str(rc))
    LOG.info("******* users are ******" + str(users))
    udc_user_id = user_id
    LOG.info("*** udc_user_id is ***" + str(udc_user_id))
    user_id = None
    for u in users:
        if u.username == username:
            user_id = u.id
    LOG.info("**** user_id is ****" + str(user_id))
    try:
        keystone.user_update_password(rc, user_id, new_passwd, admin=True)
        LOG.info("**** user password updated ****")
        udc = UserDataCenter.objects.get(user_id=udc_user_id)
        LOG.info("**** user password updated ****")
        udc.keystone_password = new_passwd
        LOG.info("**** user password updated ****")
        udc.save()
        LOG.info("**** user password updated ****")

    except:
        raise
    return True
def add_user_tenants(request, tenant_id, ID):

    datacenter = DataCenter.get_default()
    rc = create_rc_by_dc(datacenter)
    roles = keystone.role_list(rc)
    LOG.info("------------------roles are----------------" + str(roles))
    #member_role = filter(lambda r: r.name.lower() == "_member_", roles)[0]

    # Grant basic role to user
    roles_id = []
    for role in roles:
        if role.name in ['SwiftOperator', '_member_', 'heat_stack_owner']:
            roles_id.append(role)

    #member_role = filter(lambda r: r.name.lower() == "_member_", roles)[0]
    #LOG.info("------------------ member role is ----------------" + str(member_role.id))
    #LOG.info("------------------ user id is ----------------" + str(u.id))

    for role in roles_id:

        try:
            keystone.add_tenant_user_role(rc,
                                          project=tenant_id,
                                          user=ID,
                                          role=role.id)
        except:
            pass
    return True
def add_user_role(keystone_user, role, user_tenant_id):

    LOG.info("ddddddddd")
    datacenter = DataCenter.get_default()
    rc = create_rc_by_dc(datacenter)
    LOG.info("********* keystone_user is *********" + str(keystone_user))
    LOG.info("********* role is *********" + str(role))
    LOG.info("********* user_tenant_id is *********" + str(user_tenant_id))
    # get user_id
    users = keystone.user_list(rc, project=user_tenant_id)
    LOG.info("******* users are ******" + str(users))
    user_id = None
    for u in users:
        if u.username == keystone_user:
            user_id = u.id
    LOG.info("****** user_id is *********" + str(user_id))

    role_id = None
    roles = keystone.role_list(rc)
    for r in roles:
        if r.name == role:
            role_id = r.id
    LOG.info("******** role_id is ********" + str(role_id))
    try:
        keystone.add_tenant_user_role(rc,
                                      project=user_tenant_id,
                                      user=user_id,
                                      role=role_id)
    except:
        pass
    return False
示例#7
0
def site_config(request):

    user = request.user
    current_user = {'username': user.username}

    if not user.is_superuser:
        # Retrieve user to use some methods of UserProxy
        user = UserProxy.objects.get(pk=user.pk)

        if user.has_udc:
            udc_id = request.session["UDC_ID"]
            data_center = DataCenter.objects.get(userdatacenter__pk=udc_id)
            data_center_name = data_center.name
            rc = create_rc_by_dc(data_center)
            sdn_enabled = neutron.is_neutron_enabled(rc)
        else:
            data_center_name = u'N/A'
            sdn_enabled = False

        current_user['datacenter'] = data_center_name
        current_user['sdn_enabled'] = sdn_enabled
        current_user['has_udc'] = user.has_udc
        current_user['is_approver'] = user.is_approver

    return render(request, 'site_config.js',
                  {'current_user': json.dumps(current_user),
                   'site_config': json.dumps(settings.SITE_CONFIG)},
                  content_type='application/javascript')
示例#8
0
def site_config(request):

    user = request.user
    current_user = {'id': user.id,  'username': user.username}

    if not user.is_superuser:
        # Retrieve user to use some methods of UserProxy
        user = UserProxy.objects.get(pk=user.pk)

        if user.has_udc:
            udc_id = request.session["UDC_ID"]
            data_center = DataCenter.objects.get(userdatacenter__pk=udc_id)
            data_center_name = data_center.name
            rc = create_rc_by_dc(data_center)
            sdn_enabled = neutron.is_neutron_enabled(rc)
        else:
            data_center_name = u'N/A'
            sdn_enabled = False

        current_user['datacenter'] = data_center_name
        current_user['sdn_enabled'] = sdn_enabled
        current_user['has_udc'] = user.has_udc
        current_user['is_approver'] = user.is_approver
        current_user['mobile'] = user.profile.mobile
        current_user['email'] = user.email

    return render(request, 'site_config.js',
                  {'current_user': json.dumps(current_user),
                   'site_config': json.dumps(settings.SITE_CONFIG)},
                  content_type='application/javascript')
示例#9
0
def change_user_keystone_passwd(user_id, username, tenant_id, new_passwd):

    datacenter = DataCenter.get_default()
    rc = create_rc_by_dc(datacenter)
    users = keystone.user_list(rc, project=tenant_id)
    LOG.info("*** rc is ***" + str(rc))
    LOG.info("******* users are ******" + str(users))
    udc_user_id = user_id
    LOG.info("*** udc_user_id is ***" + str(udc_user_id))
    user_id = None
    for u in users:
        if u.username == username:
            user_id = u.id
    LOG.info("**** user_id is ****" + str(user_id))
    try:
        keystone.user_update_password(rc, user_id, new_passwd, admin=True)
        LOG.info("**** user password updated ****")
        udc = UserDataCenter.objects.get(user_id=udc_user_id)
        LOG.info("**** user password updated ****")
        udc.keystone_password = new_passwd 
        LOG.info("**** user password updated ****")
        udc.save()
        LOG.info("**** user password updated ****")

    except:
        raise
    return True
示例#10
0
    def list(self, request):
        rc = create_rc_by_dc(DataCenter.objects.all()[0])
        roles = []
        for role in keystone.role_list(rc):
 	    roles.append({"role":role.name})
        roles.append({"role":"admin_or_owner"})
        #keystone.role_list(rc)
        #LOG.info(roles)
        return Response(roles)
示例#11
0
 def list(self, request):
     rc = create_rc_by_dc(DataCenter.objects.all()[0])
     roles = []
     for role in keystone.role_list(rc):
         roles.append({"role": role.name})
     roles.append({"role": "admin_or_owner"})
     #keystone.role_list(rc)
     #LOG.info(roles)
     return Response(roles)
示例#12
0
def batch_delete(request):

    LOG.info("**** start to delete network ****")
    datacenter = DataCenter.get_default()
    rc = create_rc_by_dc(datacenter)
    LOG.info(request.data)
    network_id = request.data['ids[]']
    LOG.info(network_id)
    neutron.network_delete(rc, network_id)
    return Response({"OPERATION_STATUS": 1, "MSG": _("Creating network")})
示例#13
0
def link_user_to_dc_task(user, datacenter, **kwargs):
    LOG.info("New user: Start action [%s]" % user.username)
    rc = create_rc_by_dc(datacenter)
    tenant_name = "%s-%04d" % (settings.OS_NAME_PREFIX, user.id)
    try:
        keystone_user = "******" % (settings.OS_NAME_PREFIX,
                                    user.id, user.username.split('@')[0])
    except:
        keystone_user = "******" % (settings.OS_NAME_PREFIX,
                                        user.id)
    pwd = "cloud!@#%s" % random.randrange(100000, 999999)
    t = keystone.tenant_create(rc,
                               name=tenant_name,
                               description=user.username)
    LOG.info("New user: create tanant [%s][tid:%s]" % (user.username, t.id))
    u = keystone.user_create(rc,
                            name=keystone_user,
                            email=user.email,
                            password=pwd,
                            project=t.id)

    LOG.info("New user: create user [%s][uid:%s]" % (user.username, u.id))
    roles = keystone.role_list(rc)
    admin_role = filter(lambda r: r.name.lower() == "admin", roles)[0]
    keystone.add_tenant_user_role(rc, project=t.id, user=u.id, role=admin_role.id)
    LOG.info("New user: add role [%s][role:%s]" % (user.username, admin_role.id))
   
    udc = UserDataCenter.objects.create(
        data_center = datacenter,
        user = user,
        tenant_name = tenant_name,
        tenant_uuid = t.id,
        keystone_user = keystone_user,
        keystone_password = pwd,
    )  
    LOG.info("New user: link to datacenter [%s][udc:%s]" % (user.username, udc.id))
    
    try:
        edit_default_security_group(user, udc)
    except Exception as ex:
        LOG.exception(ex)

    try:
        Contract.objects.create(
            user = user,
            udc = udc,
            name = user.username,
            customer = user.username,
            start_date = datetime.datetime.now(),
            end_date = datetime.datetime.now(),
            deleted = False
        )
    except Exception as ex:
        LOG.exception(ex)
    return u
示例#14
0
def role_create(request, role_name):


    LOG.info("************* start to create a new role in keystone ***************")
    rc = create_rc_by_dc(DataCenter.objects.all()[0])
    LOG.info("************* rc is ***************" + str(rc))
    try:
        role = keystone.role_create(rc, role_name)
    except:
        return False
    return True
示例#15
0
def role_create(request, role_name):

    LOG.info(
        "************* start to create a new role in keystone ***************")
    rc = create_rc_by_dc(DataCenter.objects.all()[0])
    LOG.info("************* rc is ***************" + str(rc))
    try:
        role = keystone.role_create(rc, role_name)
    except:
        return False
    return True
示例#16
0
def project_delete(request, ID):

    LOG.info(
        "************* start to create a new role in keystone ***************")
    rc = create_rc_by_dc(DataCenter.objects.all()[0])
    LOG.info("************* rc is ***************" + str(rc))
    try:
        role = keystone.tenant_delete(rc, ID)
        LOG.info("*** create success ***")
    except:
        return False
    return True
示例#17
0
 def list(self, request):
     datacenter = DataCenter.get_default()
     LOG.info("****** signup get method ********")
     rc = create_rc_by_dc(datacenter)
     LOG.info("****** signup get method ********")
     tenants = keystone.keystoneclient(rc).tenants.list()
     tenants_id = [] 
     for tenant in tenants:
         if str(tenant.name) not in ["admin", "demo", "services"]:
             tenants_id.append({'name': tenant.name, 'id': tenant.id})
     LOG.info("********* tenants_id is **************" + str(tenants_id))
     return Response(tenants_id)
示例#18
0
 def list(self, request):
     datacenter = DataCenter.get_default()
     LOG.info("****** signup get method ********")
     rc = create_rc_by_dc(datacenter)
     LOG.info("****** signup get method ********")
     tenants = keystone.keystoneclient(rc).tenants.list()
     tenants_id = []
     for tenant in tenants:
         if str(tenant.name) not in ["admin", "demo", "services"]:
             tenants_id.append({'name': tenant.name, 'id': tenant.id})
     LOG.info("********* tenants_id is **************" + str(tenants_id))
     return Response(tenants_id)
示例#19
0
    def list(self, request):
        try:
            udc_id = request.session["UDC_ID"]
            if request.user.is_superuser:
                serializer = InstanceSerializer(queryset, many=True)
                return Response(serializer.data)

            system = False
            security = False
            audit = False
            member = False
            UDC = UserDataCenter.objects.get(pk=udc_id)
            LOG.info(UDC)
            LOG.info("4")
            keystone_user_id = UDC.keystone_user_id
            LOG.info("4")
            tenant_uuid = UDC.tenant_uuid
            LOG.info("4")
            rc = create_rc_by_dc(DataCenter.objects.all()[0])
            LOG.info("4")
            user_roles = keystone.roles_for_user(rc, keystone_user_id,
                                                 tenant_uuid)
            LOG.info("4")
            for user_role in user_roles:
                LOG.info("5")
                LOG.info(user_role.name)
                if user_role.name == "system":
                    LOG.info("5")
                    system = True
                    break
                if user_role.name == "security":
                    security = True
                    break
                if user_role.name == "audit":
                    audit = True
                    break

                if not system and not security and not audit:
                    member = True
            if request.user.is_superuser or system:
                serializer = InstanceSerializer(queryset, many=True)
                return Response(serializer.data)

            UDC = UserDataCenter.objects.all().filter(user=request.user)[0]
            project_id = UDC.tenant_uuid
            queryset = self.get_queryset().filter(
                Q(user=request.user, user_data_center__pk=udc_id)
                | Q(tenant_uuid=project_id) | Q(assigneduser=request.user))
            serializer = InstanceSerializer(queryset, many=True)
            return Response(serializer.data)
        except Exception as e:
            LOG.exception(e)
            return Response()
示例#20
0
def update_user(request):

    LOG.info("******* data is ******" + str(request.data))
    LOG.info("****** username is ******" + str(request.data['username']))
    posted_username = request.data['username']
    email = request.data['email']
    mobile = request.data['mobile']
    user_id = request.data['id']
    user = User.objects.all().get(id = request.data['id'])
    userprofile = UserProfile.objects.all().get(user = user)
    LOG.info(user_id)
    if User.objects.filter(username = posted_username).exists():
        if User.objects.get(username = posted_username).id != int(user_id):
            return Response({"success": False,
                     "msg": _("Duplicated user name.Please enter another user name.")})
    if User.objects.filter(email = email).exists():
        if User.objects.get(email = email).id != int(user_id):
            return Response({"success": False,
                     "msg": _("Duplicated email.Please enter another email address.")})
    if UserProfile.objects.filter(mobile = mobile).exists():
        if UserProfile.objects.get(mobile = mobile).user != user:
            return Response({"success": False,
                     "msg": _("Duplicated mobile.Please enter another mobile.")})
    if str(posted_username) in ['neutron', 'cinder', 'keystone', 'nova', 'glance', 'heat', 'swift', 'admin', 'ceilometer']:     
        return Response({"success": False,
                     "msg": _("Service user must not be created.")})
    LOG.info("uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu")
    LOG.info("uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu")
    LOG.info("uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu")
    try:
        user_data_center = UserDataCenter.objects.all().get(user = user)
        keystone_user_id = user_data_center.keystone_user_id
        rc = create_rc_by_dc(DataCenter.get_default())
        keystone_user = keystone.user_get(rc, keystone_user_id)
        LOG.info(keystone_user)
        manager = keystone.keystoneclient(rc, admin=True).users
        update_user = manager.update(keystone_user, name = posted_username, email = email)
        #keystone.user_update(rc, keystone_user, name = posted_username, email = email)
        keystone_user = keystone.user_get(rc, keystone_user_id)
        LOG.info(keystone_user)
    except Exception as e:
        traceback.print_exc()
        return Response({"success":False, "msg":str(e)})
    try:
        user.username = posted_username
        user.email = email
        userprofile.mobile = mobile
        user.save()
        userprofile.save()
    except:
        traceback.print_exc()
    return Response({"success":True})
示例#21
0
def keystone_list_users(request):

    LOG.info(
        "************* start to create a new role in keystone ***************")
    rc = create_rc_by_dc(DataCenter.objects.all()[0])
    LOG.info("************* rc is ***************" + str(rc))
    users = None
    try:
        users = keystone.user_list(rc)
        LOG.info("*** users are ***" + str(users))
    except:
        return False
    return users
示例#22
0
def list_view(request):

    udc_id = request.session["UDC_ID"]
    system = False
    security = False
    audit = False
    member = False
    UDC = UserDataCenter.objects.get(pk=udc_id)
    LOG.info(UDC)
    LOG.info("4")
    keystone_user_id = UDC.keystone_user_id
    LOG.info("4")
    tenant_uuid = UDC.tenant_uuid
    LOG.info("4")
    rc = create_rc_by_dc(DataCenter.objects.all()[0])
    LOG.info("4")
    LOG.info(str(keystone_user_id))
    LOG.info(str(tenant_uuid))
    user_roles = keystone.roles_for_user(rc, keystone_user_id, tenant_uuid)
    LOG.info("4")
    for user_role in user_roles:
        LOG.info("5")
        LOG.info(user_role.name)
        if user_role.name == "system":
            LOG.info("5")
            system = True
            break
        if user_role.name == "security":
            security = True
            break
        if user_role.name == "audit":
            audit = True
            break

        if not system and not security and not audit:
            member = True
    """
    if system:
        floatings = Floating.objects.filter(deleted=False)
        serializer = FloatingSerializer(floatings, many=True)
        return Response(serializer.data)
    """
    floatings = Floating.objects.filter(deleted=False)
    serializer = FloatingSerializer(floatings, many=True)
    return Response(serializer.data)
    floatings = Floating.objects.filter(
        user=request.user,
        user_data_center=request.session["UDC_ID"],
        deleted=False)
    serializer = FloatingSerializer(floatings, many=True)
    return Response(serializer.data)
示例#23
0
def delete_keystone_user(tenant_id, username):
    datacenter = DataCenter.get_default()
    rc = create_rc_by_dc(datacenter)
    users = keystone.user_list(rc, project=tenant_id)
    LOG.info("******* users are ******" + str(users))
    user_id = None
    for u in users:
        if u.username == username:
            user_id = u.id
    try:
        keystone.user_delete(rc, user_id)
    except:
        pass
    return True
示例#24
0
 def get(self, request):
     LOG.info("****** signup get method ********")
     datacenter = DataCenter.get_default()
     LOG.info("****** signup get method ********")
     rc = create_rc_by_dc(datacenter)
     LOG.info("****** signup get method ********")
     tenants = keystone.keystoneclient(rc).tenants.list()
     tenants_id = {}
     for tenant in tenants:
         if str(tenant.name) not in ["admin", "demo", "services"]:
             tenants_id[tenant.id] = tenant.name
     LOG.info("********* tenants_id is **************" + str(tenants_id))
     return self.response(request, CloudUserCreateForm(
         initial={'username': '',  'email': '', 'mobile': ''}), tenants_id)
示例#25
0
    def list(self, reqeust):

        datacenter = DataCenter.get_default()
        LOG.info("ccc")
        rc = create_rc_by_dc(datacenter)
        LOG.info("ccc")
        tenants = keystone.keystoneclient(rc).tenants.list()
        LOG.info("cccccccc")
        tenants_id = [] 
        for tenant in tenants:
            if str(tenant.name) not in ["admin", "demo", "services"]:
                tenants_id.append({'tenant_id': tenant.id, 'tenant_name':tenant.name, 'description': tenant.description})
        LOG.info("tenants_id is" + str(tenants_id))
        return Response(tenants_id)
示例#26
0
def delete_keystone_user(tenant_id, username):
    datacenter = DataCenter.get_default()
    rc = create_rc_by_dc(datacenter)
    users = keystone.user_list(rc, project=tenant_id)
    LOG.info("******* users are ******" + str(users))
    user_id = None
    for u in users:
        if u.username == username:
            user_id = u.id
    try:
        keystone.user_delete(rc, user_id)
    except:
        pass
    return True
示例#27
0
def role_delete(request, role_name):

    LOG.info(
        "************* start to create a new role in keystone ***************")
    rc = create_rc_by_dc(DataCenter.objects.all()[0])
    LOG.info("************* rc is ***************" + str(rc))

    roles = keystone.role_list(rc)
    role_id = None
    for role_ in roles:
        if role_name == role_.name:
            role_id = role_.id
    try:
        role = keystone.role_delete(rc, role_id)
    except:
        return False
    return True
示例#28
0
def role_delete(request, role_name):


    LOG.info("************* start to create a new role in keystone ***************")
    rc = create_rc_by_dc(DataCenter.objects.all()[0])
    LOG.info("************* rc is ***************" + str(rc))

    roles = keystone.role_list(rc)
    role_id = None
    for role_ in roles:
        if role_name == role_.name:
            role_id = role_.id
    try:
        role = keystone.role_delete(rc, role_id)
    except:
        return False
    return True
示例#29
0
def project_create(request, tenant_name, tenant_description):

    LOG.info(
        "************* start to create a new role in keystone ***************")
    rc = create_rc_by_dc(DataCenter.objects.all()[0])
    LOG.info("************* rc is ***************" + str(rc))
    tenant_id = None
    LOG.info("tenant name" + str(tenant_name))
    LOG.info("tenant name" + str(tenant_description))
    try:
        project = keystone.tenant_create(rc, tenant_name)
        LOG.info("*** project is ***" + str(project))
        tenant_id = project.id
        LOG.info(" tenant_id is" + str(tenant_id))
    except:
        return False
    return tenant_id
示例#30
0
    def list(self, reqeust):

        datacenter = DataCenter.get_default()
        LOG.info("ccc")
        rc = create_rc_by_dc(datacenter)
        LOG.info("ccc")
        tenants = keystone.keystoneclient(rc).tenants.list()
        LOG.info("cccccccc")
        tenants_id = []
        for tenant in tenants:
            if str(tenant.name) not in ["admin", "demo", "services"]:
                tenants_id.append({
                    'tenant_id': tenant.id,
                    'tenant_name': tenant.name,
                    'description': tenant.description
                })
        LOG.info("tenants_id is" + str(tenants_id))
        return Response(tenants_id)
示例#31
0
def delete_snapshots(request):
    LOG.info("request data is ids")
    ids = request.data.getlist('ids[]')
    datacenter = DataCenter.get_default()
    rc = create_rc_by_dc(datacenter)
    LOG.info(settings.GLANCE_ENDPOINT)
    url = settings.GLANCE_ENDPOINT
    try:
        client = glance.glanceclient(rc, url)
        for snapshot in Snapshot.objects.filter(pk__in=ids):
            image_id = snapshot.snapshot_id
            LOG.info(image_id)
            try:
                client.images.delete(image_id)
            except Exception as e:
                LOG.info(str(e))
                Snapshot.objects.filter(pk__in=ids).delete()
                LOG.info("dddd")
                Image.objects.filter(uuid=image_id).delete()
                LOG.info("dddd")
                continue
                return Response(
                    {
                        'success': False,
                        "msg": _('Snapshots have not been deleted!')
                    },
                    status=status.HTTP_201_CREATED)
            LOG.info("dddd")
            Snapshot.objects.filter(pk__in=ids).delete()
            LOG.info("dddd")
            Image.objects.filter(uuid=image_id).delete()
            LOG.info("dddd")
        return Response(
            {
                'success': True,
                "msg": _('Snapshots have been deleted!')
            },
            status=status.HTTP_201_CREATED)
    except:
        traceback.print_exc()
        return Response({
            'success': False,
            "msg": _('Failed to delete Snapshots!')
        })
示例#32
0
 def get(self, request):
     LOG.info("****** signup get method ********")
     datacenter = DataCenter.get_default()
     LOG.info("****** signup get method ********")
     rc = create_rc_by_dc(datacenter)
     LOG.info("****** signup get method ********")
     tenants = keystone.keystoneclient(rc).tenants.list()
     tenants_id = {}
     for tenant in tenants:
         if str(tenant.name) not in ["admin", "demo", "services"]:
             tenants_id[tenant.id] = tenant.name
     LOG.info("********* tenants_id is **************" + str(tenants_id))
     return self.response(
         request,
         CloudUserCreateForm(initial={
             'username': '',
             'email': '',
             'mobile': ''
         }), tenants_id)
示例#33
0
def is_uuid_unique(request):
    LOG.info(request.GET['uuid'])
    rc = create_rc_by_dc(DataCenter.objects.all()[0])
    try:
        uuid = request.GET['uuid']
        LOG.info("uuid is" + str(uuid))
        client = glance.glanceclient_tm(rc,
                                        settings.GLANCE_ENDPOINT,
                                        version='2')
        LOG.info("client is" + str(client))
        try:
            images = client.images.get(str(uuid))
        except Exception as e:
            LOG.info(str(e))
            return Response(False)

        return Response(True)
    except:
        return Response(False)
示例#34
0
def volume_typelist_view(request):
    try:
        udc_id = request.session["UDC_ID"]
        data_center = DataCenter.objects.get(userdatacenter__pk=udc_id)
        rc = create_rc_by_dc(data_center)
        LOG.info("******** rc is ***********" + str(rc))
        volume_types = cinder.cinderclient(rc).volume_types.list()

        volumetypes = []
        for vt in volume_types:
            LOG.info("******** vt is *********" + str(vt))

            volumetypes.append({"name": vt.name})
        #keystone.role_list(rc)
        LOG.info(volumetypes)
        return Response(volumetypes)

    except Exception as e:
        LOG.exception("query volume type list error, msg:[%s]", e)
        return Response(status=status.HTTP_400_BAD_REQUEST)
示例#35
0
def volume_typelist_view(request):
    try:
        udc_id = request.session["UDC_ID"]
        data_center = DataCenter.objects.get(userdatacenter__pk=udc_id)
        rc = create_rc_by_dc(data_center)
        LOG.info("******** rc is ***********" + str(rc))
        volume_types = cinder.cinderclient(rc).volume_types.list()

        volumetypes = []
        for vt in volume_types:
            LOG.info("******** vt is *********" + str(vt))
             
            volumetypes.append({"name":vt.name})
        #keystone.role_list(rc)
        LOG.info(volumetypes)
        return Response(volumetypes)

    except Exception as e:
        LOG.exception("query volume type list error, msg:[%s]", e)
        return Response(status=status.HTTP_400_BAD_REQUEST)
示例#36
0
    def list(self, request):

        datacenter = DataCenter.get_default()
        rc = create_rc_by_dc(datacenter)
        networks = neutron.network_list(rc)
        data = []
        for network in networks:
            LOG.info("1")
            admin_state_up = network.admin_state_up
            LOG.info("1")
            if admin_state_up:
                admin_state_up = "启用"
            data.append({
                "id": network.id,
                "name": network.name,
                "admin_state_up": admin_state_up,
                "tenant_id": network.tenant_id
            })
            LOG.info("1")
        LOG.info(" data is " + str(data))
        return Response(data)
示例#37
0
    def response(self, request, form, tenants_id=None, errors=None):

        LOG.info("****** signup get method ********")
        datacenter = DataCenter.get_default()
        LOG.info("****** signup get method ********")
        rc = create_rc_by_dc(datacenter)
        LOG.info("****** signup get method ********")
        tenants = keystone.keystoneclient(rc).tenants.list()
        tenants_id = {}
        for tenant in tenants:
            if str(tenant.name) not in ["admin", "demo", "services"]:
                tenants_id[tenant.id] = tenant.name
        LOG.info("********* tenants_id is **************" + str(tenants_id))

        context = {
            "BRAND": settings.BRAND,
            "form": form,
            "errors": errors,
            "tenants_id": tenants_id
        }

        return render(request, 'signup.html', context)
示例#38
0
    def response(self, request, form, tenants_id=None, errors=None):

        LOG.info("****** signup get method ********")
        datacenter = DataCenter.get_default()
        LOG.info("****** signup get method ********")
        rc = create_rc_by_dc(datacenter)
        LOG.info("****** signup get method ********")
        tenants = keystone.keystoneclient(rc).tenants.list()
        tenants_id = {}
        for tenant in tenants:
            if str(tenant.name) not in ["admin", "demo", "services"]:
                tenants_id[tenant.id] = tenant.name
        LOG.info("********* tenants_id is **************" + str(tenants_id))

        context = {
            "BRAND": settings.BRAND,
            "form": form,
            "errors": errors,
            "tenants_id": tenants_id
        }

        return render(request, 'signup.html', context)
示例#39
0
def instance_unassignedusers(request):
    ins = Instance.objects.all().filter(uuid=request.data['uuid'],
                                        deleted=False)[0]
    users = User.objects.all()
    member_users = []
    for user in users:
        try:
            keystone_user_id = UserDataCenter.objects.get(
                user_id=user.id).keystone_user_id
            tenant_uuid = UserDataCenter.objects.get(
                user_id=user.id).tenant_uuid
            rc = create_rc_by_dc(DataCenter.objects.all()[0])
        except:
            continue
        try:
            user_roles = keystone.roles_for_user(rc, keystone_user_id,
                                                 tenant_uuid)
        except:
            continue
        system = False
        security = False
        audit = False
        for user_role in user_roles:
            if user_role.name == "system":
                system = True
                break
            if user_role.name == "audit":
                audit = True
                break
            if user_role.name == "security":
                security = True
                break
        if not system and not security and not audit and not user.is_superuser:
            member_users.append(user)
    LOG.info(member_users)
    serializer = UserSerializer(member_users, many=True)
    return Response(serializer.data)
示例#40
0
def create_network(request):

    #udc_id = request.session['UDC_ID']
    #UDC = UserDataCenter.objects.get(pk=udc_id)
    #tenant_id = UDC.tenant_uuid
    #rc = create_rc_by_udc(UDC)

    datacenter = DataCenter.get_default()
    rc = create_rc_by_dc(datacenter)
    LOG.info("*********** data is *************" + str(request.data))

    network_name = request.data['network_name']
    LOG.info(network_name)
    tenant = request.data['tenant']
    LOG.info(tenant)
    physnet = request.data['physnet']
    LOG.info(physnet)
    seg_id = request.data['seg_id']
    LOG.info(seg_id)
    subnet_name = request.data['subnet_name']
    LOG.info(subnet_name)
    status = request.data['status'] or 'up'
    LOG.info("**** status is ****" + str(status))
    cidr = request.data['cidr']
    LOG.info(cidr)
    ip_version = request.data['ip_version'] or 'ipv4'
    LOG.info(ip_version)
    gateway = request.data['gateway']
    LOG.info(gateway)
    enable_gateway = request.data['enable_gateway'] or 'up'
    LOG.info(enable_gateway)
    enable_dhcp = request.data['enable_dhcp'] or 'up'
    LOG.info(enable_dhcp)
    allocation_polls = request.data['allocation_polls']
    LOG.info(allocation_polls)
    dns_server = request.data['dns_server']
    LOG.info(dns_server)
    host_router = request.data['host_router']
    LOG.info(host_router)

    admin_state_up = status

    network_type = "vlan"
    network = _create_network(rc, network_name, admin_state_up, physnet,
                              seg_id, tenant, network_type)
    LOG.info("**** network is ****" + str(network))

    network_id = network.id
    LOG.info(network_id)
    network_name = network.name
    LOG.info(network_name)
    LOG.info(tenant)
    try:
        subnet = _create_subnet(rc, subnet_name, cidr, ip_version, gateway,
                                enable_gateway, enable_dhcp, allocation_polls,
                                dns_server, network_id, network_name,
                                host_router, tenant)
    except Exception as e:
        LOG.info(e)
    LOG.info("*** subnet is ***" + str(subnet))
    if not subnet:
        neutron.network_delete(rc, network.id)
        return Response({
            "OPERATION_STATUS": 0,
            "MSG": _('Network address exists')
        })

    LOG.info(" start to save network info in db *****")
    return Response({"OPERATION_STATUS": 1, "MSG": _("Creating network")})
示例#41
0
def site_config(request):


    user = request.user

    user_ = UserProxy.objects.get(pk=user.pk)

    current_user = {'username': user.username, 'is_system_user': user_.is_system_user, 'is_safety_user': user_.is_safety_user, 'is_audit_user': user_.is_audit_user}


    """
    if user_.is_system_user:
        return render(request, 'site_config.js',
                      {'current_user': json.dumps(current_user),
                       'site_config': json.dumps(settings.SITE_CONFIG)},
                      content_type='application/javascript')
    if user_.is_audit_user:
        return render(request, 'site_config.js',
                      {'current_user': json.dumps(current_user),
                       'site_config': json.dumps(settings.SITE_CONFIG)},
                      content_type='application/javascript')

    if user_.is_safety_user:
        return render(request, 'site_config.js',
                      {'current_user': json.dumps(current_user),
                       'site_config': json.dumps(settings.SITE_CONFIG)},
                      content_type='application/javascript')
    """

    if not user.is_superuser:
        LOG.info("99999999")
        # Retrieve user to use some methods of UserProxy
        user = UserProxy.objects.get(pk=user.pk)

        if user.has_udc:
            LOG.info("cccccc")
            udc_id = request.session["UDC_ID"]
            LOG.info(udc_id)
            data_center = DataCenter.objects.get(userdatacenter__pk=udc_id)
            data_center_name = data_center.name
            rc = create_rc_by_dc(data_center)
            sdn_enabled = neutron.is_neutron_enabled(rc)
            LOG.info("ccc0000")
        else:
            data_center_name = u'N/A'
            sdn_enabled = False

        current_user['datacenter'] = data_center_name
        LOG.info("1")
        current_user['sdn_enabled'] = sdn_enabled
        LOG.info("2")
        current_user['has_udc'] = user.has_udc
        LOG.info("3")
        current_user['is_approver'] = user.is_approver
        LOG.info("4")
        current_user['email'] = user.email

        LOG.info("4")
        udc_id = request.session["UDC_ID"]
        LOG.info("4")
        system = False
        security = False
        audit = False
        member = False
        UDC = UserDataCenter.objects.get(pk=udc_id)
        LOG.info(UDC)
        LOG.info("4")
        keystone_user_id = UDC.keystone_user_id
        LOG.info("4")
        tenant_uuid = UDC.tenant_uuid
        LOG.info("4")
        rc = create_rc_by_dc(DataCenter.objects.all()[0])
        LOG.info("4")
        user_roles = keystone.roles_for_user(rc, keystone_user_id, tenant_uuid)
        LOG.info("4")
        for user_role in user_roles:
            LOG.info("5")
            LOG.info(user_role.name)
            if user_role.name == "system":
                LOG.info("5")
                system = True
                break
            if user_role.name == "security":
                security = True
                break
            if user_role.name == "audit":
                audit = True
                break
        
        if not system and not security and not audit:
            member = True
        current_user['system'] = system
        current_user['security'] = security
        current_user['audit'] = audit
        current_user['member'] = member
    if user.is_superuser:
        current_user['system'] = True
        current_user['security'] = True 
        current_user['audit'] = True

        LOG.info("*** current_user is ***" + str(current_user))
        LOG.info("888888")

    LOG.info("*** current_user is ***" + str(current_user))
    return render(request, 'site_config.js',
                  {'current_user': json.dumps(current_user),
                   'site_config': json.dumps(settings.SITE_CONFIG)},
                  content_type='application/javascript')
示例#42
0
def summary(request):
    LOG.info('-------------------- this is for admin UDC -------------------')
    try:
        user = User.objects.filter(username=request.user)[0]
        if user.is_superuser:
            dc = DataCenter.get_default()
            rc = create_rc_by_dc(dc)
            if not UserDataCenter.objects.filter(data_center=dc,
                                                 user=user).exists():
                initcloud_tenant = "initcloud_" + user.username
                LOG.info(initcloud_tenant)
                tenant = keystone.tenant_create(rc, name=initcloud_tenant)
                LOG.info("--------- create tenant for superuser ---------")
                LOG.info(tenant)
                users = keystone.user_list(rc)
                for admin_user in users:
                    if admin_user.name == settings.ADMIN_NAME:
                        keystone_user_id = admin_user.id
                        keystone.user_update_tenant(rc, admin_user, tenant)
                        for role in keystone.role_list(rc):
                            if role.name == 'admin':
                                role_id = role.id
                                keystone.add_tenant_user_role(rc,
                                                              user=admin_user,
                                                              role=role_id,
                                                              project=tenant)
                #tenants = keystone.keystoneclient(rc).tenants.list()
                #for tenant in tenants:
                #    if tenant.name == settings.ADMIN_TENANT_NAME:
                #	admin_tenant_id = tenant.id
                #	admin_tenant_name = tenant.name
                #	LOG.info(tenant.name)
                #	LOG.info(tenant.id)
                admin_UDC = UserDataCenter.objects.create(
                    data_center=dc,
                    user=user,
                    tenant_name=tenant.name,
                    tenant_uuid=tenant.id,
                    keystone_user=settings.ADMIN_NAME,
                    keystone_password=settings.ADMIN_PASS,
                    keystone_user_id=keystone_user_id)
                Contract.objects.create(user=user,
                                        udc=admin_UDC,
                                        name=user.username,
                                        customer=user.username,
                                        start_date=datetime.datetime.now(),
                                        end_date=datetime.datetime.now(),
                                        deleted=False)
            #if not Contract.objects.filter(user=user).exists():
            #admin_UDC = UserDataCenter.objects.filter(data_center=dc, user=user)[0]
            #Contract.objects.create(user=user,udc=admin_UDC,name=user.username,customer=user.username,start_date=datetime.datetime.now(),end_date=datetime.datetime.now(),deleted=False)
    except:
        traceback.print_exc()
    return Response({
        "user_num":
        User.objects.filter(is_superuser=False).count(),
        "instance_num":
        Instance.objects.filter(deleted=False).count(),
        "flavor_num":
        Flavor.objects.count(),
        "data_center_num":
        DataCenter.objects.count(),
        "contract_num":
        Contract.objects.filter(deleted=False).count(),
        "image_num":
        Image.objects.count()
    })
示例#43
0
def link_user_to_dc_task(user, datacenter):
    LOG.info("New user: Start action [%s]" % user.username)
    registered_udc = UserDataCenter.objects.filter(user=user,
                                data_center=datacenter)
    if len(registered_udc) > 0:
        LOG.info("New user: has registere to datacenter [%s][%s]" % (
                                user.username, datacenter.name))
        return True

    rc = create_rc_by_dc(datacenter)
    tenant_name = "%s-%04d" % (settings.OS_NAME_PREFIX, user.id)
    try:
        keystone_user = "******" % (settings.OS_NAME_PREFIX,
                                        user.id, user.username.split('@')[0])
    except:
        keystone_user = "******" % (settings.OS_NAME_PREFIX,
                                          user.id)
    pwd = "cloud!@#%s" % random.randrange(100000, 999999)
    t = keystone.tenant_create(rc,
                               name=tenant_name,
                               description=user.username)
    LOG.info("New user: create tanant [%s][tid:%s]" % (user.username, t.id))
    u = keystone.user_create(rc,
                             name=keystone_user,
                             email=user.email,
                             password=pwd,
                             project=t.id)

    LOG.info("New user: create user [%s][uid:%s]" % (user.username, u.id))
    roles = keystone.role_list(rc)
    admin_role = filter(lambda r: r.name.lower() == "admin", roles)[0]
    keystone.add_tenant_user_role(rc, project=t.id, user=u.id,
                                  role=admin_role.id)
    LOG.info(
        "New user: add role [%s][role:%s]" % (user.username, admin_role.id))

    udc = UserDataCenter.objects.create(
        data_center=datacenter,
        user=user,
        tenant_name=tenant_name,
        tenant_uuid=t.id,
        keystone_user=keystone_user,
        keystone_password=pwd,
    )
    LOG.info(
        "New user: link to datacenter [%s][udc:%s]" % (user.username, udc.id))

    try:
        edit_default_security_group(user, udc)
    except Exception as ex:
        LOG.exception(ex)

    try:
        Contract.objects.create(
            user=user,
            udc=udc,
            name=user.username,
            customer=user.username,
            start_date=datetime.datetime.now(),
            end_date=datetime.datetime.now(),
            deleted=False
        )
    except Exception as ex:
        LOG.exception(ex)
    return u
示例#44
0
def link_user_to_dc_task(user, datacenter):

    if UserDataCenter.objects.filter(
            user=user, data_center=datacenter).exists():
        LOG.info("User[%s] has already registered to data center [%s]",
                 user.username, datacenter.name)
        return True

    rc = create_rc_by_dc(datacenter)
    tenant_name = "%s-%04d" % (settings.OS_NAME_PREFIX, user.id)

    keystone_user = "******" % (settings.OS_NAME_PREFIX, user.id,
                                    user.username)

    LOG.info("Begin to register user [%s] in data center [%s]",
             user.username, datacenter.name)

    t = keystone.tenant_create(rc, name=tenant_name,
                               description=user.username)
    LOG.info("User[%s] is registered as tenant[id:%s][name:%s] in "
             "data center [%s]", user.username, t.id, tenant_name,
             datacenter.name)

    pwd = "cloud!@#%s" % random.randrange(100000, 999999)
    u = keystone.user_create(rc, name=keystone_user, email=user.email,
                             password=pwd, project=t.id)

    LOG.info("User[%s] is registered as keystone user[uid:%s] in "
             "data center[%s]", user.username, u.id, datacenter.name)

    roles = keystone.role_list(rc)
    admin_role = filter(lambda r: r.name.lower() == "admin", roles)[0]
    keystone.add_tenant_user_role(rc, project=t.id, user=u.id,
                                  role=admin_role.id)
    LOG.info("Admin role[%s] in tenant[%s] is granted to user[%s]",
             admin_role.id, t.id, user.username)

    udc = UserDataCenter.objects.create(
        data_center=datacenter,
        user=user,
        tenant_name=tenant_name,
        tenant_uuid=t.id,
        keystone_user=keystone_user,
        keystone_password=pwd,
    )

    LOG.info("Register user[%s] to datacenter [udc:%s] successfully",
             user.username, udc.id)
    try:
        edit_default_security_group(user, udc)
    except:
        LOG.exception("Failed to edit default security group for user[%s] in "
                      "data center[%s]", user.username, datacenter.name)

    Contract.objects.create(
        user=user,
        udc=udc,
        name=user.username,
        customer=user.username,
        start_date=datetime.datetime.now(),
        end_date=datetime.datetime.now(),
        deleted=False
    )

    return u
示例#45
0
def link_user_to_dc_task(user, datacenter, tenant_id, password):

    LOG.info("---------start to execute link_user_to_dc_task-----------")

    LOG.info("----------username is-------------" + str(user.username))


    if UserDataCenter.objects.filter(
            user=user, data_center=datacenter).exists():
        LOG.info("User[%s] has already registered to data center [%s]",
                 user.username, datacenter.name)
        return True

    LOG.info("-----------datacenter is-----------------" + str(datacenter))

    #create rc for auth.
    rc = create_rc_by_dc(datacenter)
    LOG.info("---------------rc is------------" + str(rc))

    #Now we do not let user to create a new tenant.
    """
    tenant_name = "%s-%04d" % (settings.OS_NAME_PREFIX, user.id)

    keystone_user = "******" % (settings.OS_NAME_PREFIX, user.id,
                                    user.username)

    LOG.info("Begin to register user [%s] in data center [%s]",
             user.username, datacenter.name)

    t = keystone.tenant_create(rc, name=tenant_name,
                               description=user.username)
    LOG.info("User[%s] is registered as tenant[id:%s][name:%s] in "
             "data center [%s]", user.username, t.id, tenant_name,
             datacenter.name)
    """
    tenant_ = keystone.tenant_get(rc, tenant_id)
    tenant_name = tenant_.name 
    LOG.info("************ tenant_name is ************" + str(tenant_name))
    #keystone_user = "******" % (settings.OS_NAME_PREFIX, user.id,
    #                                user.username)

    keystone_user = user.username 
    #pwd = "cloud!@#%s" % random.randrange(100000, 999999)
    pwd = password
    
    #hard coded tenant id and name for test.
    project_id = tenant_id 

    u = keystone.user_create(rc, name=keystone_user, email=user.email,
                             password=pwd, project=project_id)

    LOG.info("User[%s] is registered as keystone user[uid:%s] in "
             "data center[%s]", user.username, u.id, datacenter.name)

    roles = keystone.role_list(rc)
    LOG.info("------------------roles are----------------" + str(roles))
    #member_role = filter(lambda r: r.name.lower() == "_member_", roles)[0]

    member_role = filter(lambda r: r.name.lower() == "_member_", roles)[0]
    LOG.info("------------------ member role is ----------------" + str(member_role.id))
    LOG.info("------------------ user id is ----------------" + str(u.id))


    try:
        keystone.add_tenant_user_role(rc, project=project_id, user=u.id,
                                      role=member_role.id)
    except:
        pass

    udc = UserDataCenter.objects.create(
        data_center=datacenter,
        user=user,
        tenant_name=tenant_name,
        tenant_uuid=project_id,
        keystone_user=keystone_user,
        keystone_password=pwd,
    )

    LOG.info("Register user[%s] to datacenter [udc:%s] successfully",
             user.username, udc.id)


    #Add default security group
    try:
        edit_default_security_group(user, udc)
    except:
        LOG.exception("Failed to edit default security group for user[%s] in "
                      "data center[%s]", user.username, datacenter.name)

    Contract.objects.create(
        user=user,
        udc=udc,
        name=user.username,
        customer=user.username,
        start_date=datetime.datetime.now(),
        end_date=datetime.datetime.now(),
        deleted=False
    )

    return u