public void OnAddHost() {
    CancelConfirm();

    HostModel model = (HostModel) getWindow();

    if (model.getProgress() != null) {
      return;
    }

    if (!model.Validate()) {
      return;
    }

    // Save changes.
    VDS host = new VDS();
    host.setvds_name((String) model.getName().getEntity());
    host.sethost_name((String) model.getHost().getEntity());
    host.setManagmentIp((String) model.getManagementIp().getEntity());
    host.setport((Integer) model.getPort().getEntity());
    host.setvds_group_id(((VDSGroup) model.getCluster().getSelectedItem()).getId());
    host.setpm_enabled((Boolean) model.getIsPm().getEntity());
    host.setpm_user(
        (Boolean) model.getIsPm().getEntity() ? (String) model.getPmUserName().getEntity() : null);
    host.setpm_password(
        (Boolean) model.getIsPm().getEntity() ? (String) model.getPmPassword().getEntity() : null);
    host.setpm_type(
        (Boolean) model.getIsPm().getEntity()
            ? (String) model.getPmType().getSelectedItem()
            : null);
    host.setPmOptionsMap(
        (Boolean) model.getIsPm().getEntity()
            ? new ValueObjectMap(model.getPmOptionsMap(), false)
            : null);

    AddVdsActionParameters vdsActionParams = new AddVdsActionParameters();
    vdsActionParams.setvds(host);
    vdsActionParams.setVdsId(host.getId());
    vdsActionParams.setRootPassword((String) model.getRootPassword().getEntity());

    model.StartProgress(null);

    Frontend.RunAction(
        VdcActionType.AddVds,
        vdsActionParams,
        new IFrontendActionAsyncCallback() {
          @Override
          public void Executed(FrontendActionAsyncResult result) {

            ClusterGuideModel localModel = (ClusterGuideModel) result.getState();
            localModel.PostOnAddHost(result.getReturnValue());
          }
        },
        this);
  }