package com.cloudera.api.dao;

import com.cloudera.api.DataView;
import com.cloudera.api.DownloadableClientConfig;
import com.cloudera.api.internal.ApiHBaseTable;
import com.cloudera.api.internal.ApiHdfsFile;
import com.cloudera.api.internal.KerberosCredentials;
import com.cloudera.api.model.ApiCommand;
import com.cloudera.api.model.ApiNameservice;
import com.cloudera.api.model.ApiNameserviceList;
import com.cloudera.api.model.ApiRoleTypeList;
import com.cloudera.api.model.ApiService;
import com.cloudera.api.model.ApiServiceConfig;
import com.cloudera.api.model.ApiServiceList;
import java.util.List;

public abstract interface ServiceManagerDao
{
  public abstract ApiService createService(String paramString1, String paramString2, ApiService paramApiService);

  @Deprecated
  public abstract ApiServiceList createServices(String paramString, ApiServiceList paramApiServiceList);

  public abstract ApiServiceList createServices(CreateServicesSpec paramCreateServicesSpec);

  public abstract ApiService deleteService(String paramString1, String paramString2);

  public abstract ApiServiceList getAllServices(String paramString, DataView paramDataView);

  public abstract ApiRoleTypeList getRoleTypes(String paramString1, String paramString2);

  public abstract ApiService getService(String paramString1, String paramString2, DataView paramDataView);

  public abstract ApiServiceList getServicesByType(String paramString1, String paramString2, DataView paramDataView);

  public abstract ApiService getMgmtService(DataView paramDataView);

  public abstract ApiServiceConfig getServiceConfig(String paramString1, String paramString2, DataView paramDataView, boolean paramBoolean);

  public abstract ApiService updateService(String paramString1, String paramString2, ApiService paramApiService);

  public abstract ApiServiceConfig updateServiceConfig(String paramString1, String paramString2, ApiServiceConfig paramApiServiceConfig, String paramString3, boolean paramBoolean);

  public abstract ApiNameservice getNameservice(String paramString1, String paramString2, String paramString3, DataView paramDataView);

  public abstract ApiNameserviceList getNameservices(String paramString1, String paramString2, DataView paramDataView);

  public abstract ApiCommand enterMaintenanceMode(String paramString1, String paramString2);

  public abstract ApiCommand exitMaintenanceMode(String paramString1, String paramString2);

  public abstract DownloadableClientConfig getClientConfig(String paramString1, String paramString2);

  public abstract KerberosCredentials getKerberosCredentials(String paramString1, String paramString2);

  public abstract List<ApiHBaseTable> getHBaseTables(String paramString1, String paramString2);

  public abstract ApiCommand enableHBaseTable(String paramString1, String paramString2, String paramString3);

  public abstract ApiCommand disableHBaseTable(String paramString1, String paramString2, String paramString3);

  public abstract List<ApiHdfsFile> listHdfsFiles(String paramString1, String paramString2, String paramString3, long paramLong, int paramInt);

  public abstract ApiHdfsFile getHdfsFileInfo(String paramString1, String paramString2, String paramString3);

  public abstract void autoAssignMgmtRoles();

  public abstract void autoConfigureMgmtService();

  public static class CreateServicesSpec
  {
    public String clusterName;
    public ApiServiceList services;
    public boolean validateReplicationSchedule;

    public CreateServicesSpec setClusterName(String clusterName)
    {
      this.clusterName = clusterName;
      return this;
    }

    public CreateServicesSpec setServices(ApiServiceList services) {
      this.services = services;
      return this;
    }

    public CreateServicesSpec setValidateReplicationSchedule(boolean value) {
      this.validateReplicationSchedule = value;
      return this;
    }
  }
}