ApiXmlDocWriter: remove hardcoded login and logout apis

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
This commit is contained in:
Rohit Yadav 2014-08-12 07:33:40 +02:00
parent b587291d55
commit 2e5bbc9a0d

View File

@ -16,6 +16,29 @@
// under the License.
package com.cloud.api.doc;
import com.cloud.alert.AlertManager;
import com.cloud.serializer.Param;
import com.cloud.utils.IteratorUtil;
import com.cloud.utils.ReflectUtil;
import com.google.gson.annotations.SerializedName;
import com.thoughtworks.xstream.XStream;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.BaseAsyncCmd;
import org.apache.cloudstack.api.BaseAsyncCreateCmd;
import org.apache.cloudstack.api.BaseCmd;
import org.apache.cloudstack.api.BaseResponse;
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.response.AsyncJobResponse;
import org.apache.cloudstack.api.response.HostResponse;
import org.apache.cloudstack.api.response.IPAddressResponse;
import org.apache.cloudstack.api.response.SecurityGroupResponse;
import org.apache.cloudstack.api.response.SnapshotResponse;
import org.apache.cloudstack.api.response.StoragePoolResponse;
import org.apache.cloudstack.api.response.TemplateResponse;
import org.apache.cloudstack.api.response.UserVmResponse;
import org.apache.cloudstack.api.response.VolumeResponse;
import org.apache.log4j.Logger;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@ -41,32 +64,6 @@ import java.util.TreeMap;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.apache.log4j.Logger;
import com.google.gson.annotations.SerializedName;
import com.thoughtworks.xstream.XStream;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.BaseAsyncCmd;
import org.apache.cloudstack.api.BaseAsyncCreateCmd;
import org.apache.cloudstack.api.BaseCmd;
import org.apache.cloudstack.api.BaseResponse;
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.response.AsyncJobResponse;
import org.apache.cloudstack.api.response.HostResponse;
import org.apache.cloudstack.api.response.IPAddressResponse;
import org.apache.cloudstack.api.response.SecurityGroupResponse;
import org.apache.cloudstack.api.response.SnapshotResponse;
import org.apache.cloudstack.api.response.StoragePoolResponse;
import org.apache.cloudstack.api.response.TemplateResponse;
import org.apache.cloudstack.api.response.UserVmResponse;
import org.apache.cloudstack.api.response.VolumeResponse;
import com.cloud.alert.AlertManager;
import com.cloud.serializer.Param;
import com.cloud.utils.IteratorUtil;
import com.cloud.utils.ReflectUtil;
public class ApiXmlDocWriter {
public static final Logger s_logger = Logger.getLogger(ApiXmlDocWriter.class.getName());
@ -183,15 +180,6 @@ public class ApiXmlDocWriter {
}
}
// Login and logout commands are hardcoded
s_allApiCommands.put("login", "login");
s_domainAdminApiCommands.put("login", "login");
s_regularUserApiCommands.put("login", "login");
s_allApiCommands.put("logout", "logout");
s_domainAdminApiCommands.put("logout", "logout");
s_regularUserApiCommands.put("logout", "logout");
s_allApiCommandsSorted.putAll(s_allApiCommands);
s_domainAdminApiCommandsSorted.putAll(s_domainAdminApiCommands);
s_regularUserApiCommandsSorted.putAll(s_regularUserApiCommands);
@ -223,66 +211,28 @@ public class ApiXmlDocWriter {
String key = (String)it.next();
// Write admin commands
if (key.equals("login")) {
writeLoginCommand(out);
writeLoginCommand(rootAdmin);
writeLoginCommand(domainAdmin);
writeLoginCommand(regularUser);
writeCommand(out, key);
writeCommand(rootAdmin, key);
ObjectOutputStream singleRootAdminCommandOs = xs.createObjectOutputStream(new FileWriter(rootAdminDirName + "/" + "login" + ".xml"), "command");
writeLoginCommand(singleRootAdminCommandOs);
// Write single commands to separate xml files
if (!key.equals("login")) {
ObjectOutputStream singleRootAdminCommandOs = xs.createObjectOutputStream(new FileWriter(rootAdminDirName + "/" + key + ".xml"), "command");
writeCommand(singleRootAdminCommandOs, key);
singleRootAdminCommandOs.close();
}
ObjectOutputStream singleDomainAdminCommandOs = xs.createObjectOutputStream(new FileWriter(domainAdminDirName + "/" + "login" + ".xml"), "command");
writeLoginCommand(singleDomainAdminCommandOs);
if (s_domainAdminApiCommands.containsKey(key)) {
writeCommand(domainAdmin, key);
ObjectOutputStream singleDomainAdminCommandOs = xs.createObjectOutputStream(new FileWriter(domainAdminDirName + "/" + key + ".xml"), "command");
writeCommand(singleDomainAdminCommandOs, key);
singleDomainAdminCommandOs.close();
}
ObjectOutputStream singleRegularUserCommandOs = xs.createObjectOutputStream(new FileWriter(regularUserDirName + "/" + "login" + ".xml"), "command");
writeLoginCommand(singleRegularUserCommandOs);
if (s_regularUserApiCommands.containsKey(key)) {
writeCommand(regularUser, key);
ObjectOutputStream singleRegularUserCommandOs = xs.createObjectOutputStream(new FileWriter(regularUserDirName + "/" + key + ".xml"), "command");
writeCommand(singleRegularUserCommandOs, key);
singleRegularUserCommandOs.close();
} else if (key.equals("logout")) {
writeLogoutCommand(out);
writeLogoutCommand(rootAdmin);
writeLogoutCommand(domainAdmin);
writeLogoutCommand(regularUser);
ObjectOutputStream singleRootAdminCommandOs = xs.createObjectOutputStream(new FileWriter(rootAdminDirName + "/" + "logout" + ".xml"), "command");
writeLogoutCommand(singleRootAdminCommandOs);
singleRootAdminCommandOs.close();
ObjectOutputStream singleDomainAdminCommandOs = xs.createObjectOutputStream(new FileWriter(domainAdminDirName + "/" + "logout" + ".xml"), "command");
writeLogoutCommand(singleDomainAdminCommandOs);
singleDomainAdminCommandOs.close();
ObjectOutputStream singleRegularUserCommandOs = xs.createObjectOutputStream(new FileWriter(regularUserDirName + "/" + "logout" + ".xml"), "command");
writeLogoutCommand(singleRegularUserCommandOs);
singleRegularUserCommandOs.close();
} else {
writeCommand(out, key);
writeCommand(rootAdmin, key);
// Write single commands to separate xml files
if (!key.equals("login")) {
ObjectOutputStream singleRootAdminCommandOs = xs.createObjectOutputStream(new FileWriter(rootAdminDirName + "/" + key + ".xml"), "command");
writeCommand(singleRootAdminCommandOs, key);
singleRootAdminCommandOs.close();
}
if (s_domainAdminApiCommands.containsKey(key)) {
writeCommand(domainAdmin, key);
ObjectOutputStream singleDomainAdminCommandOs = xs.createObjectOutputStream(new FileWriter(domainAdminDirName + "/" + key + ".xml"), "command");
writeCommand(singleDomainAdminCommandOs, key);
singleDomainAdminCommandOs.close();
}
if (s_regularUserApiCommands.containsKey(key)) {
writeCommand(regularUser, key);
ObjectOutputStream singleRegularUserCommandOs = xs.createObjectOutputStream(new FileWriter(regularUserDirName + "/" + key + ".xml"), "command");
writeCommand(singleRegularUserCommandOs, key);
singleRegularUserCommandOs.close();
}
}
}
@ -393,64 +343,6 @@ public class ApiXmlDocWriter {
}
}
private static void writeLoginCommand(ObjectOutputStream out) throws ClassNotFoundException, IOException {
ArrayList<Argument> request = new ArrayList<Argument>();
ArrayList<Argument> response = new ArrayList<Argument>();
// Create a new command, set name and description
Command apiCommand = new Command();
apiCommand.setName("login");
apiCommand.setDescription("Logs a user into the CloudStack. A successful login attempt will generate a JSESSIONID cookie value that can be passed in subsequent Query command calls until the \"logout\" command has been issued or the session has expired.");
// Generate request
request.add(new Argument("username", "Username", true));
request.add(new Argument(
"password",
"Hashed password (Default is MD5). If you wish to use any other hashing algorithm, you would need to write a custom authentication adapter See Docs section.",
true));
request.add(new Argument("domain",
"path of the domain that the user belongs to. Example: domain=/com/cloud/internal. If no domain is passed in, the ROOT domain is assumed.", false));
request.add(new Argument("domainId",
"id of the domain that the user belongs to. If both domain and domainId are passed in, \"domainId\" parameter takes precendence", false));
apiCommand.setRequest(request);
// Generate response
response.add(new Argument("username", "Username"));
response.add(new Argument("userid", "User id"));
response.add(new Argument("password", "Password"));
response.add(new Argument("domainid", "domain ID that the user belongs to"));
response.add(new Argument("timeout", "the time period before the session has expired"));
response.add(new Argument("account", "the account name the user belongs to"));
response.add(new Argument("firstname", "first name of the user"));
response.add(new Argument("lastname", "last name of the user"));
response.add(new Argument("type", "the account type (admin, domain-admin, read-only-admin, user)"));
response.add(new Argument("timezone", "user time zone"));
response.add(new Argument("timezoneoffset", "user time zone offset from UTC 00:00"));
response.add(new Argument("sessionkey", "Session key that can be passed in subsequent Query command calls"));
apiCommand.setResponse(response);
out.writeObject(apiCommand);
}
private static void writeLogoutCommand(ObjectOutputStream out) throws ClassNotFoundException, IOException {
ArrayList<Argument> request = new ArrayList<Argument>();
ArrayList<Argument> response = new ArrayList<Argument>();
// Create a new command, set name and description
Command apiCommand = new Command();
apiCommand.setName("logout");
apiCommand.setDescription("Logs out the user");
// Generate request - no request parameters
apiCommand.setRequest(request);
// Generate response
response.add(new Argument("description", "success if the logout action succeeded"));
apiCommand.setResponse(response);
out.writeObject(apiCommand);
}
private static ArrayList<Argument> setRequestFields(Set<Field> fields) {
ArrayList<Argument> arguments = new ArrayList<Argument>();
Set<Argument> requiredArguments = new HashSet<Argument>();