none
clustering RRS feed

  • Pregunta

  •  

    Buenas Tardes estoy desarrollando una aplicación en C++ que se conecta al Windows cluster por medio de la libreria

    <ClusApi.h>

     y tengo el siguiente codigo el cual ya se conecta a mi cluster, me regresa el nombre de los grupos, el nombre de los files share de cada grupo y el nombre del disco

     

     

    #include "stdafx.h"

    #include "ClusApi.h"


    void main()
    {

    HCLUSTER hCluster = NULL;
    HGROUP hGroup = NULL;
    HRESOURCE hResource = NULL;
    HCLUSENUM hEnum;
    HGROUPENUM hGroupEnum;
    HRESENUM hResourceEnum;


    DWORD chName;
    DWORD chNameGroup;
    DWORD chNameResource;
    DWORD dwType;
    DWORD dwIndex = 0;
    DWORD dwIndexGroup = 0;
    DWORD dwIndexResource = 0;
    DWORD cbNameSize = 0;

    WCHAR szName[512];
    WCHAR szNameGroup[9000];
    WCHAR szNameResource[9000];
    //WCHAR szAddressData[9000];

    DWORD dwCluster = ERROR_SUCCESS;
    DWORD dwResult = ERROR_SUCCESS;
    DWORD dwResultGroup = ERROR_SUCCESS;
    DWORD dwResultResource = ERROR_SUCCESS;
    DWORD dwGetIp = ERROR_SUCCESS;

    hCluster = OpenCluster( L"CICNAS" );

    /*WCHAR szPathData[] = L"Y:\\Share PRUEBAROGELIO";
    CLUSPROP_SZ_DECLARE( PathValue, sizeof(szPathData) / sizeof(WCHAR) );
    PathValue.Syntax.dw = CLUSPROP_SYNTAX_LIST_VALUE_SZ;
    PathValue.cbLength  = sizeof( szPathData );
    //StringCbCopy( PathValue.sz, PathValue.cbLength, szPathData );
    }*/


    if(hCluster == NULL)
    {
     printf("\nNo se encontro el Cluster");Sleep(1000);
    }
    else
    {
     hEnum = ClusterOpenEnum(hCluster,CLUSTER_ENUM_GROUP);
     if(hEnum == NULL)
     {
      printf("\nCluster fue Encontrado pero no se puede abrir");Sleep(1000);
     }
     else
     {
      printf("\nSe Encontro el Cluster!!!");Sleep(1000);
      
          
      while( dwResult == ERROR_SUCCESS )
      {
       chName = sizeof (szName);
       dwResult = ClusterEnum(hEnum,dwIndex,&dwType, szName,&chName);
       if(dwResult == ERROR_SUCCESS)
       {
        printf("\n\tNombre del Grupo= ");Sleep(1000);
        int i=0;
        while(szNameIdea)
        {
         printf("%c",szNameIdea);
         i++;
        }
        hGroup = OpenClusterGroup(hCluster,szName);
        if(hGroup == NULL)
        {
         printf("\n\tNo existen Grupos");Sleep(1000);
        }
        else
          {
           ClusterGroupOpenEnum(hGroup,CLUSTER_GROUP_ENUM_NODES|CLUSTER_GROUP_ENUM_CONTAINS);
           hGroupEnum = ClusterGroupOpenEnum(hGroup,CLUSTER_GROUP_ENUM_CONTAINS);
           if(hGroupEnum == NULL)
           {
            printf("\n\tError al recorrer Grupos");Sleep(1000);
           }
           else
           {
            dwResultGroup = ERROR_SUCCESS;
            dwIndexGroup = 0;
            while( dwResultGroup == ERROR_SUCCESS )
            {
             chNameGroup = sizeof (szNameGroup);
             dwResultGroup = ClusterGroupEnum(hGroupEnum,dwIndexGroup,&dwType, szNameGroup,&chNameGroup);
             if(dwResultGroup == ERROR_SUCCESS)
             {
              printf("\n\t\tszNameGroup s = ");Sleep(1000);
              int i=0;
              while(szNameGroupIdea)
              {
               printf("%c",szNameGroupIdea);
               i++;
              }
              hResource = OpenClusterResource(hCluster,szNameGroup);
              if(hResource == NULL)
              {
               printf("\n\t\tError!!!");
              }
              else
              {
               ClusterResourceOpenEnum(hResource,CLUSTER_RESOURCE_ENUM_NODES|CLUSTER_RESOURCE_ENUM_DEPENDS);
               hResourceEnum = ClusterResourceOpenEnum(hResource,CLUSTER_RESOURCE_ENUM_NODES);
               if(hResourceEnum == NULL)
               {
                printf("\n\t\tError!!!");
               }
               else
               {
                dwResultResource = ERROR_SUCCESS;
                dwIndexResource = 0;
                while (dwResultResource == ERROR_SUCCESS)
                {
                 chNameResource = sizeof(szNameResource);
                 dwResultResource = ClusterResourceEnum(hResourceEnum,dwIndexResource,&dwType,szNameResource,&chNameResource);
                 if(dwResultResource == ERROR_SUCCESS)
                 {
                  int i=0;
                  while(szNameResourceIdea)
                  {
                   
                   i++;
                  }
                 }
                 dwIndexResource++;
                }
               }
              }
             }
             else if(dwResultGroup == ERROR_NO_MORE_ITEMS)
             {
              printf("\n\tFin Grupo");Sleep(3000);
             }
             else if( dwResultGroup == ERROR_MORE_DATA)
             {
              printf("\n\tNo mas grupos");Sleep(3000);
             }
             else
             {
              printf("\n\tError!!!!");Sleep(1000);
             }
             dwIndexGroup++;
            }
           }
          }
       }
       dwIndex++;
      }
    }
    dwResult = GetLastError();
    }
    SetLastError( dwResult );

     

     

    }

     

    ahora necesito conseguir la Ip address de cada grupo, el path completo de cada Files Shares y los permisos de cada Shares ya estuve investigando y encontre

     

    http://msdn2.microsoft.com/en-us/library/aa370239(VS.85).aspx

    http://msdn2.microsoft.com/en-us/library/aa369585(VS.85).aspx

    http://msdn2.microsoft.com/en-us/library/aa370494(VS.85).aspx

     

    pero no logro obtener lo que quiero, ojala alguien me pueda ayudar

     

     

    Saludos

    lunes, 10 de marzo de 2008 19:39