194 lines
4.5 KiB
C
194 lines
4.5 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1996 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
trename.c
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Test for cluster object rename APIs
|
||
|
|
||
|
Author:
|
||
|
|
||
|
John Vert (jvert) 5/10/1996
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
#include "windows.h"
|
||
|
#include "cluster.h"
|
||
|
#include "stdio.h"
|
||
|
#include "stdlib.h"
|
||
|
|
||
|
LPWSTR ClusterName=NULL;
|
||
|
BOOL DoGroup=FALSE;
|
||
|
BOOL DoResource=FALSE;
|
||
|
BOOL DoCluster=FALSE;
|
||
|
LPWSTR OldName=NULL;
|
||
|
LPWSTR NewName=NULL;
|
||
|
|
||
|
CHAR UsageText[] =
|
||
|
"TRENAME [-c cluster] type [oldname] newname\n"
|
||
|
" cluster\tspecifies the name of the cluster to connect to\n"
|
||
|
" type\t\teither \"cluster\" or \"group\" or \"resource\"\n"
|
||
|
" oldname\t\tthe current friendly name of the object\n"
|
||
|
" \t\t(required for group or resource)\n"
|
||
|
" newname\t\tthe new friendly name of the object\n";
|
||
|
|
||
|
|
||
|
void
|
||
|
Usage(
|
||
|
void
|
||
|
)
|
||
|
{
|
||
|
fprintf(stderr, UsageText);
|
||
|
exit(1);
|
||
|
}
|
||
|
|
||
|
LPWSTR
|
||
|
GetString(
|
||
|
IN LPSTR String
|
||
|
)
|
||
|
{
|
||
|
LPWSTR wString;
|
||
|
DWORD Length;
|
||
|
|
||
|
Length = strlen(String)+1;
|
||
|
|
||
|
wString = malloc(Length*sizeof(WCHAR));
|
||
|
if (wString == NULL) {
|
||
|
fprintf(stderr, "GetString couldn't malloc %d bytes\n",Length*sizeof(WCHAR));
|
||
|
}
|
||
|
mbstowcs(wString, String, Length);
|
||
|
return(wString);
|
||
|
}
|
||
|
|
||
|
void
|
||
|
ParseArgs(
|
||
|
int argc,
|
||
|
char *argv[]
|
||
|
)
|
||
|
{
|
||
|
int i;
|
||
|
DWORD ArgsSeen=0;
|
||
|
|
||
|
for (i=1;i<argc;i++) {
|
||
|
if ((argv[i][0] == '-') ||
|
||
|
(argv[i][0] == '/')) {
|
||
|
switch (argv[i][1]) {
|
||
|
case 'c':
|
||
|
if (++i == argc) {
|
||
|
Usage();
|
||
|
}
|
||
|
ClusterName = GetString(argv[i]);
|
||
|
break;
|
||
|
default:
|
||
|
Usage();
|
||
|
break;
|
||
|
}
|
||
|
} else {
|
||
|
switch (ArgsSeen) {
|
||
|
case 0:
|
||
|
//
|
||
|
// type
|
||
|
//
|
||
|
if (_stricmp(argv[i], "group")==0) {
|
||
|
DoGroup = TRUE;
|
||
|
} else if (_stricmp(argv[i], "resource") == 0) {
|
||
|
DoResource = TRUE;
|
||
|
} else if (_stricmp(argv[i], "cluster") == 0) {
|
||
|
DoCluster = TRUE;
|
||
|
ArgsSeen++;
|
||
|
} else {
|
||
|
Usage();
|
||
|
}
|
||
|
ArgsSeen++;
|
||
|
break;
|
||
|
case 1:
|
||
|
OldName = GetString(argv[i]);
|
||
|
ArgsSeen++;
|
||
|
break;
|
||
|
case 2:
|
||
|
NewName = GetString(argv[i]);
|
||
|
ArgsSeen++;
|
||
|
break;
|
||
|
default:
|
||
|
Usage();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (ArgsSeen != 3) {
|
||
|
Usage();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
_cdecl
|
||
|
main (argc, argv)
|
||
|
int argc;
|
||
|
char *argv[];
|
||
|
{
|
||
|
HCLUSTER hClus;
|
||
|
HGROUP hGroup;
|
||
|
HRESOURCE hResource;
|
||
|
LPSTR KeyName, ParamName;
|
||
|
LPSTR ParamValue;
|
||
|
DWORD Status;
|
||
|
|
||
|
ParseArgs(argc, argv);
|
||
|
|
||
|
hClus = OpenCluster(ClusterName);
|
||
|
if (hClus == NULL) {
|
||
|
fprintf(stderr,
|
||
|
"OpenCluster %ws failed %d\n",
|
||
|
(ClusterName == NULL) ? L"(NULL)" : ClusterName,
|
||
|
GetLastError());
|
||
|
return(0);
|
||
|
}
|
||
|
|
||
|
if (DoGroup) {
|
||
|
hGroup = OpenClusterGroup(hClus, OldName);
|
||
|
if (hGroup == NULL) {
|
||
|
fprintf(stderr,
|
||
|
"OpenGroup %ws failed %d\n", OldName, GetLastError());
|
||
|
return(0);
|
||
|
}
|
||
|
Status = SetClusterGroupName(hGroup, NewName);
|
||
|
if (Status != ERROR_SUCCESS) {
|
||
|
fprintf(stderr,
|
||
|
"SetClusterGroupName from %ws to %ws failed %d\n",
|
||
|
OldName,
|
||
|
NewName,
|
||
|
Status);
|
||
|
}
|
||
|
} else if (DoResource) {
|
||
|
hResource = OpenClusterResource(hClus, OldName);
|
||
|
if (hResource == NULL) {
|
||
|
fprintf(stderr,
|
||
|
"OpenResource %ws failed %d\n", OldName, GetLastError());
|
||
|
return(0);
|
||
|
}
|
||
|
Status = SetClusterResourceName(hResource, NewName);
|
||
|
if (Status != ERROR_SUCCESS) {
|
||
|
fprintf(stderr,
|
||
|
"SetClusterResourceName from %ws to %ws failed %d\n",
|
||
|
OldName,
|
||
|
NewName,
|
||
|
Status);
|
||
|
}
|
||
|
} else if (DoCluster) {
|
||
|
Status = SetClusterName(hClus, NewName);
|
||
|
if (Status != ERROR_SUCCESS) {
|
||
|
fprintf(stderr,
|
||
|
"SetClusterName to %ws failed %d\n",
|
||
|
NewName,
|
||
|
Status);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return(0);
|
||
|
}
|
||
|
|