code: 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