示例#1
0
 def update_own_password(self, body):
     token = authen.get_token(self.request)
     user_id = authen.get_user(self.request)['id']
     yield identify.update_user_own_password(token, user_id, **body)
     user = yield identify.get_user_by_id(user_id)
     log.write(self.request, log.Type.USER, user['name'],
               log.Operator.RESET_PASS, user['name'])
     self.response(Response())
示例#2
0
 def delete_user(self, user_id):
     user = yield identify.get_user_by_id(user_id)
     if not user:
         raise UserNotExist
     yield identify.delete_user(user_id)
     log.write(self.request, log.Type.USER, user['name'],
               log.Operator.DELETE, user['displayname'])
     self.response(Response())
示例#3
0
 def update_image_ws(self, image_id, params):
     img = yield get_image(image_id)
     if not img:
         raise ImageNotExsit
     ret = yield update_image(image_id, **params)
     log.write(self.request, log.Type.IMAGE, ret['name'],
               log.Operator.UPDATE, ret['os'])
     self.response(Response())
示例#4
0
 def del_vm_nic(self, vm_id, port_id):
     vm = yield compute.get_server(vm_id, detailed=False)
     port = yield compute.get_port(port_id)
     if not vm or not port:
         raise InvalidateParam(args=['vm_id'])
     yield compute.del_vm_nic(vm, port_id)
     log.write(self.request, log.Type.VM, vm['name'], log.Operator.DEL_NIC,
               port.get("name") + " " + port.get("ip"))
     self.response(Response())
示例#5
0
 def set_tenant_user_role(self, user_id, tenant_id, body):
     user = yield identify.get_user_by_id(user_id)
     yield identify.set_user_role(user_id, body['role'], tenant_id)
     t = yield get_tenant_by_id(tenant_id)
     if body['role'] == 'tenant_admin':
         log.write(self.request, log.Type.TENANT, t['name'],
                   log.Operator.SET_TENANT_ROLE, user['displayname'])
     else:
         log.write(self.request, log.Type.TENANT, t['name'],
                   log.Operator.CANCEL_TENANT_ROLE, user['displayname'])
     self.response(Response())
示例#6
0
 def update_volume(self, volume_id, volume):
     vm_des = volume.get('des')
     vm_display_name = volume.get('displayname')
     params = {'displayname': vm_display_name, 'des': vm_des}
     volume = yield get_volume(volume_id, detailed=False)
     if not volume:
         raise VolumeNotExist(args=[volume_id])
     volume_name = yield update_volume(volume_id, **params)
     log.write(self.request, log.Type.VDISK, volume_name,
               log.Operator.UPDATE, vm_display_name)
     self.response(Response())
示例#7
0
 def create_image_ws(self, img):
     location = img.get('url', None)
     if not location:
         filename = img.get('filename', None)
         if not filename:
             raise Exception("neither 'url' nor 'filename' found.")
         location = 'file:///tmp/' + filename
     img['location'] = location
     result = yield create_image(img)
     log.write(self.request, log.Type.IMAGE, img['name'],
               log.Operator.CREATE, img['os'])
     self.response(Response(result=result))
示例#8
0
 def delete_image_ws(self, image_id):
     try:
         img = yield get_image(image_id)
         if not img or (img and img.get("status") != "active"):
             raise ImageNotExsit
         yield delete_image(image_id)
         log.write(self.request, log.Type.IMAGE, img['name'],
                   log.Operator.DELETE, img['os'])
     except BaseException as e:
         LOG.error("delete_image_ws error : %s" % e)
         raise e
     self.response(Response())
示例#9
0
    def set_user_role(self, body):
        user = yield user_mapping(body["name"])
        yield identify.set_user_role(user.get("id"), body['role'],
                                     body.get("tenant"))
        if body['role'] == 'sys_admin':
            log.write(self.request, log.Type.USER, user['name'],
                      log.Operator.SET_ADMIN_ROLE, user['displayname'])
        else:
            log.write(self.request, log.Type.USER, user['name'],
                      log.Operator.CANCEL_ADMIN_ROLE, user['displayname'])

        self.response(Response())
示例#10
0
 def add_vm_nic(self, vm_id, body):
     vlan_id = body.get("vlan_id")
     subnet_id = body.get("subnet_id")
     ip = body.get("ip")
     mac = body.get("mac")
     vlan = yield get_network(vlan_id)
     vm = yield compute.get_server(vm_id, detailed=False)
     if not vm or not vlan:
         raise InvalidateParam(args=['vm_id'])
     fixed_ip = yield compute.add_vm_nic(vm, vlan_id, subnet_id, ip, mac)
     log.write(self.request, log.Type.VM, vm['name'], log.Operator.ADD_NIC,
               vlan.get("name") + " " + fixed_ip)
     self.response(Response())
示例#11
0
 def create_volume(self, volume):
     volume = CloudVolume(**volume)
     if volume.user_id:
         users = yield list_tenant_users(volume.tenant_id)
         user_ids = [user_item["id"] for user_item in users]
         if volume.user_id not in user_ids:
             raise VolumeTenantUserUnmatch(args=[{
                 "user_id": volume.user_id
             }])
     created_volume = yield create_volume(**volume.__dict__)
     display_name = volume.displayname \
         if volume.displayname else volume.name
     for v in created_volume["names"]:
         log.write(self.request, log.Type.VDISK, v, log.Operator.CREATE,
                   display_name)
     self.response(Response(result={"batch": created_volume['batch_name']}))
示例#12
0
 def vm_user(self, body):
     """
     :param body:
     {
         "vm-user": [{
             "user_id": "83d546cc-3975-4890-8c31-e8c859203d9b",
             "vm_id": "e603b2a7-4854-4368-8bfb-e68d0ac6c170"
         }]
     }
     :return:
     """
     vm_u = body.get("vm-user")
     if not vm_u:
         raise InvalidateParam(args=['vm-user'])
     for v_u in vm_u:
         vm_id = v_u.get("vm_id")
         u_id = v_u.get("user_id")
         vm = yield compute.get_server(vm_id)
         if not vm:
             raise VmNotExist(args=["vm_id"])
         vm_tenant_id = vm["tenant"]["id"]
         users = yield list_tenant_users(vm_tenant_id)
         user_ids = [user_item["id"] for user_item in users]
         if not user_ids or u_id not in user_ids:
             raise VmTenantUserUnmatch(args=[{"user_id": u_id}])
     for v_u in vm_u:
         vm_id = v_u.get("vm_id")
         u_id = v_u.get("user_id")
         vm = yield compute.get_server(vm_id)
         user = yield get_user_by_id(u_id)
         attch_vol = yield compute.list_server_attach_volume(vm_id)
         for vol_item in attch_vol:
             vol_id = vol_item["volume_id"]
             yield set_volume_user(vol_id, u_id)
         yield compute.set_vm_user(vm_id, u_id)
         log.write(
             self.request, log.Type.VM, vm['name'], log.Operator.SET_USER,
             vm['displayname'] + " " +
             gen_network_comment(vm['network'].values()) + " " +
             user['displayname'])
     self.response(Response())
示例#13
0
    def del_volume(self, volume_id):
        volume = yield get_volume(volume_id)
        if volume:
            if volume.get("status") in (VDISK_STATUS_ATTACH,
                                        VDISK_STATUS_BACKUP,
                                        VDISK_STATUS_DELETE,
                                        VDISK_STATUS_RECOVER):
                raise VolumeOperationFailed

            volume_meta = volume['metadata'] \
                if volume['metadata'] else {}
            volume_meta['status'] = VDISK_STATUS_DELETE
            yield set_metadata(volume_id=volume_id, metadata=volume_meta)

            yield clean_vm_or_volume_snapshot(volume['name'])
            yield delete_volume(volume_id)
        else:
            raise VolumeNotExist
        log.write(self.request, log.Type.VDISK, volume['name'],
                  log.Operator.DELETE, volume['metadata']['displayname'])
        self.response(Response())
示例#14
0
    def volume_user(self, body):
        volume_u = body.get("volume-user")
        if not volume_u:
            raise InvalidateParam(args=['volume-user'])
        for v_u in volume_u:
            volume_id = v_u.get("volume_id")
            volume = yield get_volume(volume_id, detailed=False)
            if not volume:
                raise VolumeNotExist(args=[volume_id])
            users = yield list_tenant_users(volume.get("tenant_id"))
            user_ids = [user_item["id"] for user_item in users]
            if user_ids and v_u.get("user_id") not in user_ids:
                raise VolumeTenantUserUnmatch(
                    args=[{
                        "user_id": v_u.get("user_id")
                    }])
        for v_u in volume_u:
            result = yield set_volume_user(v_u.get("volume_id"),
                                           v_u.get("user_id"))
            log.write(self.request, log.Type.VDISK, result['name'],
                      log.Operator.SET_USER,
                      result['displayname'] + " " + result['user'])

        self.response(Response())
示例#15
0
 def clear_alarm(self, id):
     alarm_info = yield ALARM.clear(id)
     log.write(self.request, log.Type.ALARM, id, log.Operator.REMOVE,
               alarm_info[0]["target"] + ' ' + alarm_info[0]["message"])
     self.response(Response())
示例#16
0
 def edit(self, body):
     config.update(body['name'], body['value'])
     log.write(self.request, log.Type.GLOBAL_SETTINGS, body['name'],
               log.Operator.UPDATE, '')
     self.response(Response())
示例#17
0
 def update_password(self, user_id, body):
     yield identify.update_user_password(user_id, body['password'])
     user = yield identify.get_user_by_id(user_id)
     log.write(self.request, log.Type.USER, user['name'],
               log.Operator.RESET_PASS, user['displayname'])
     self.response(Response())
示例#18
0
 def update_user(self, user_id, body):
     t = yield identify.update_user(user_id, **body)
     log.write(self.request, log.Type.USER, t['name'], log.Operator.UPDATE,
               t['displayname'])
     self.response(Response(result=t))
示例#19
0
 def create_user(self, body):
     t = yield identify.create_user(**body)
     log.write(self.request, log.Type.USER, body['name'],
               log.Operator.CREATE, body['displayname'])
     self.response(Response(result=t))
示例#20
0
 def update_user_enable(self, user_id, body):
     yield identify.update_user_enable(user_id, body['enable'])
     user = yield identify.get_user_by_id(user_id)
     log.write(self.request, log.Type.USER, user['name'],
               log.Operator.UPDATE, user['displayname'])
     self.response(Response())