export function StoridgeProfileDefaultModel() {
  this.Directory = '/cio/';
  this.Capacity = 20;
  this.Redundancy = 2;
  this.Provisioning = 'thin';
  this.Type = 'ssd';
  this.MinIOPS = 100;
  this.MaxIOPS = 2000;
  this.MinBandwidth = 1;
  this.MaxBandwidth = 100;
  this.Filesystem = 'btrfs';
  this.SnapshotEnabled = false;
  this.SnapshotInterval = 1440;
  this.SnapshotMax = 1;
  this.EncryptionEnabled = false;
  this.InterfaceType = '';
  this.InterfaceDriver = '';
  this.InterfaceNetwork = '';
  this.InterfaceConf = '';
  this.Labels = [];
}

export function StoridgeProfileListModel(data) {
  this.Name = data;
  this.Checked = false;
}

export function StoridgeProfileModel(name, data) {
  this.Name = name;
  this.Directory = data.directory;
  this.Capacity = data.capacity;
  this.Provisioning = data.provision;
  this.Type = data.type;
  this.Redundancy = data.level;

  if (data.iops) {
    this.MinIOPS = data.iops.min;
    this.MaxIOPS = data.iops.max;
  }

  if (data.bandwidth) {
    this.MinBandwidth = data.bandwidth.min;
    this.MaxBandwidth = data.bandwidth.max;
  }

  if (data.filesystem) {
    this.Filesystem = data.filesystem.type;
  }
  // this.Filesystem = data.filesystem;

  var service = data.service;

  if (service.snapshot) {
    this.SnapshotEnabled = service.snapshot.enabled;
    this.SnapshotInterval = service.snapshot.interval;
    this.SnapshotMax = service.snapshot.max;
  } else {
    this.SnapshotEnabled = false;
  }

  if (service.encryption) {
    this.EncryptionEnabled = service.encryption.enabled;
  } else {
    this.EncryptionEnabled = false;
  }

  if (data.interface) {
    this.InterfaceType = data.interface.type;
    this.InterfaceDriver = data.interface.driver;
    this.InterfaceNetwork = data.interface.network;
    this.InterfaceConf = data.interface.conf;
  }

  if (data.label) {
    this.Labels = data.label;
  } else {
    this.Labels = [];
  }
}

export function StoridgeCreateProfileRequest(model) {
  this.name = model.Name;
  this.capacity = model.Capacity;
  this.directory = model.Directory;
  this.provision = model.Provisioning;
  this.type = model.Type;
  this.level = model.Redundancy;
  if (model.MinIOPS && model.MaxIOPS) {
    this.iops = {
      min: model.MinIOPS,
      max: model.MaxIOPS,
    };
  }

  if (model.MinBandwidth && model.MaxBandwidth) {
    this.bandwidth = {
      min: model.MinBandwidth,
      max: model.MaxBandwidth,
    };
  }

  this.filesystem = {
    type: model.Filesystem,
  };

  var service = {};

  service.snapshot = {
    enabled: model.SnapshotEnabled,
  };
  if (model.SnapshotEnabled) {
    service.snapshot.interval = model.SnapshotInterval;
    service.snapshot.max = model.SnapshotMax;
  }

  service.encryption = {
    enabled: model.EncryptionEnabled,
  };

  this.service = service;

  this.interface = {
    driver: model.InterfaceDriver,
    network: model.InterfaceNetwork,
    conf: model.InterfaceConf,
  };

  if (model.InterfaceType) {
    this.interface.type = model.InterfaceType;
  }

  this.label = model.Labels;
}
