17 #if _RAKNET_SUPPORT_Rackspace==1 && _RAKNET_SUPPORT_TCPInterface==1
23 using namespace SLNet;
38 if (idx == (
unsigned int)-1)
44 if (idx != (
unsigned int)-1)
54 if (index!=(
unsigned int)-1)
67 RackspaceOperation ro;
69 ro.isPendingAuthentication=
false;
81 #if OPEN_SSL_CLIENT_SUPPORT==1
86 "GET /v1.0 HTTP/1.1\n"
90 ,_authenticationURL, _rackspaceCloudUsername, _apiAccessKey);
91 tcpInterface->
Send(command.C_String(), (
unsigned int) command.GetLength(), ro.connectionAddress,
false);
94 return ro.connectionAddress;
102 return "Success_200";
104 return "Success_201";
106 return "Success_202";
108 return "Success_203";
110 return "Success_204";
112 return "Cloud_Servers_Fault_500";
114 return "Service_Unavailable_503";
116 return "Unauthorized_401";
118 return "Bad_Request_400";
120 return "Over_Limit_413";
122 return "Bad_Media_Type_415";
124 return "Item_Not_Found_404";
126 return "Build_In_Progress_409";
128 return "Resize_Not_Allowed_403";
130 return "Connection_Closed_Without_Reponse";
132 return "Unknown_Failure";
134 return "Unknown event type (bug)";
138 RackspaceOperation ro;
140 ro.httpCommand=httpCommand;
141 ro.operation=operation;
144 if (ro.isPendingAuthentication==
false)
163 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
164 "<server xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" name=\"%s\" imageId=\"%s\" flavorId=\"%s\">"
178 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
179 "<server xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\""
183 if (newPassword.
IsEmpty()==
false)
207 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
208 "<reboot xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" type=\"%s\""
217 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
218 "<rebuild xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" imageId=\"%s\""
227 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
228 "<resize xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" flavorId=\"%s\""
237 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
238 "<confirmResize xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" "
245 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
246 "<revertResize xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" "
265 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
266 "<image xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" name=\"%s\" serverId=\"%s\""
291 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
292 "<sharedIpGroup xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\" name=\"%s\">", name.
C_String());
293 if (optionalServerId.
IsEmpty()==
false)
295 xml+=
"</sharedIpGroup>";
312 unsigned int i, operationsIndex;
316 if (
operations[operationsIndex].isPendingAuthentication==
false &&
operations[operationsIndex].connectionAddress==systemAddress)
318 RackspaceOperation ro =
operations[operationsIndex];
322 const char *packetData = packetDataString.
C_String();
324 char resultCodeStr[32];
329 result=strstr((
char*) packetData,
"HTTP/1.1 ");
332 result+=strlen(
"HTTP/1.1 ");
333 for (i=0; i <
sizeof(resultCodeStr)-1 && result[i] && result[i]>=
'0' && result[i]<=
'9'; i++)
334 resultCodeStr[i]=result[i];
336 resultCodeInt=atoi(resultCodeStr);
338 switch (resultCodeInt)
381 if (
operations[operationsIndex].isPendingAuthentication==
true)
383 operations[operationsIndex].isPendingAuthentication=
false;
400 eventCallbacks[i]->OnAuthenticationResult(rackspaceEventType, (
const char*) packetData);
407 eventCallbacks[i]->OnListServersResult(rackspaceEventType, (
const char*) packetData);
413 eventCallbacks[i]->OnListServersWithDetailsResult(rackspaceEventType, (
const char*) packetData);
419 eventCallbacks[i]->OnCreateServerResult(rackspaceEventType, (
const char*) packetData);
426 eventCallbacks[i]->OnGetServerDetails(rackspaceEventType, (
const char*) packetData);
432 eventCallbacks[i]->OnUpdateServerNameOrPassword(rackspaceEventType, (
const char*) packetData);
438 eventCallbacks[i]->OnDeleteServer(rackspaceEventType, (
const char*) packetData);
444 eventCallbacks[i]->OnListServerAddresses(rackspaceEventType, (
const char*) packetData);
450 eventCallbacks[i]->OnShareServerAddress(rackspaceEventType, (
const char*) packetData);
456 eventCallbacks[i]->OnDeleteServerAddress(rackspaceEventType, (
const char*) packetData);
462 eventCallbacks[i]->OnRebootServer(rackspaceEventType, (
const char*) packetData);
468 eventCallbacks[i]->OnRebuildServer(rackspaceEventType, (
const char*) packetData);
474 eventCallbacks[i]->OnResizeServer(rackspaceEventType, (
const char*) packetData);
480 eventCallbacks[i]->OnConfirmResizedServer(rackspaceEventType, (
const char*) packetData);
486 eventCallbacks[i]->OnRevertResizedServer(rackspaceEventType, (
const char*) packetData);
494 eventCallbacks[i]->OnListFlavorsResult(rackspaceEventType, (
const char*) packetData);
500 eventCallbacks[i]->OnGetFlavorDetailsResult(rackspaceEventType, (
const char*) packetData);
506 eventCallbacks[i]->OnListImagesResult(rackspaceEventType, (
const char*) packetData);
512 eventCallbacks[i]->OnCreateImageResult(rackspaceEventType, (
const char*) packetData);
518 eventCallbacks[i]->OnGetImageDetailsResult(rackspaceEventType, (
const char*) packetData);
524 eventCallbacks[i]->OnDeleteImageResult(rackspaceEventType, (
const char*) packetData);
530 eventCallbacks[i]->OnListSharedIPGroups(rackspaceEventType, (
const char*) packetData);
536 eventCallbacks[i]->OnListSharedIPGroupsWithDetails(rackspaceEventType, (
const char*) packetData);
542 eventCallbacks[i]->OnCreateSharedIPGroup(rackspaceEventType, (
const char*) packetData);
548 eventCallbacks[i]->OnGetSharedIPGroupDetails(rackspaceEventType, (
const char*) packetData);
554 eventCallbacks[i]->OnDeleteSharedIPGroup(rackspaceEventType, (
const char*) packetData);
570 unsigned int operationsIndex;
571 for (operationsIndex=0; operationsIndex <
operations.
Size(); operationsIndex++)
585 "%s %s/%s HTTP/1.1\n"
587 "Content-Type: application/xml\n"
588 "Content-Length: %i\n"
589 "Accept: application/xml\n"
590 "X-Auth-Token: %s\n",
595 if (ro.xml.IsEmpty()==
false)
606 tcpInterface->
Send(command.C_String(), (
unsigned int) command.GetLength(), ro.connectionAddress,
false);
613 char *result, *resultEnd;
615 result=strstr((
char*) data, stringStart);
622 result+=strlen(stringStart);
631 while (*resultEnd && (*resultEnd!=
'\r') && (*resultEnd!=
'\n') )
633 output.
Truncate((
unsigned int) (resultEnd-result));
649 #if OPEN_SSL_CLIENT_SUPPORT==1
673 return (
unsigned int) -1;