def config_create(self, kernel=None, label=None, devices=[], disks=[],
            volumes=[], **kwargs):
        from .volume import Volume
        hypervisor_prefix = 'sd' if self.hypervisor == 'kvm' else 'xvd'
        device_names = [hypervisor_prefix + string.ascii_lowercase[i] for i in range(0, 8)]
        device_map = {device_names[i]: None for i in range(0, len(device_names))}
        if devices and (disks or volumes):
            raise ValueError('You may not call config_create with "devices" and '
                    'either of "disks" or "volumes" specified!')
        if not devices:
            if not isinstance(disks, list):
                disks = [disks]
            if not isinstance(volumes, list):
                volumes = [volumes]
            devices = []
            for d in disks:
                if d is None:
                    devices.append(None)
                elif isinstance(d, Disk):
                    devices.append(d)
                else:
                    devices.append(Disk(self._client, int(d), self.id))
            for v in volumes:
                if v is None:
                    devices.append(None)
                elif isinstance(v, Volume):
                    devices.append(v)
                else:
                    devices.append(Volume(self._client, int(v)))
        if not devices:
            raise ValueError('Must include at least one disk or volume!')
        for i, d in enumerate(devices):
            if d is None:
                pass
            elif isinstance(d, Disk):
                device_map[device_names[i]] = {'disk_id': d.id }
            elif isinstance(d, Volume):
                device_map[device_names[i]] = {'volume_id': d.id }
            else:
                raise TypeError('Disk or Volume expected!')
        params = {
            'kernel': kernel.id if issubclass(type(kernel), Base) else kernel,
            'label': label if label else "{}_config_{}".format(self.label, len(self.configs)),
            'devices': device_map,
        }
        params.update(kwargs)
        result = self._client.post("{}/configs".format(Instance.api_endpoint), model=self, data=params)
        self.invalidate()
        if not 'id' in result:
            raise UnexpectedResponseError('Unexpected response creating config!', json=result)
        c = Config(self._client, result['id'], self.id, result)
        return c