Exemplo n.º 1
0
/**
 * msiGetRescAddr
 *
 * @param[in]		rescName	the resource name 
 * @param[out]		outAddress	the returned IP address
 * @param[in,out]	rei		the rule execution information
 * @return				the status code, 0 on success
 */
int
msiGetRescAddr( msParam_t *rescName, msParam_t *outAddress,
	ruleExecInfo_t *rei )
{
    char *tmpPtr;
    int status;
    rescGrpInfo_t *rescGrpInfo = NULL;

    RE_TEST_MACRO( "    Calling msiGetRescAddr" );

    tmpPtr = parseMspForStr (rescName);

    if (tmpPtr == NULL)  {
	rodsLog (LOG_ERROR, "msiGetRescAddr: missing name input");
	rei->status = USER__NULL_INPUT_ERR;
	return USER__NULL_INPUT_ERR;
    }

    status = _getRescInfo (rei->rsComm, tmpPtr, &rescGrpInfo);
    if (status < 0) {
         rodsLog (LOG_ERROR,
          "msiGetRescAddr: _getRescInfo of %s error. stat = %d",
          rescName, status);
        return status;
    }

    fillStrInMsParam (outAddress, rescGrpInfo->rescInfo->rescLoc);

    rei->status = 0;
    return 0;
}
Exemplo n.º 2
0
int
_rsProcStat (rsComm_t *rsComm, procStatInp_t *procStatInp,
             genQueryOut_t **procStatOut)
{
    int status;
    rodsServerHost_t *rodsServerHost;
    int remoteFlag;
    rodsHostAddr_t addr;
    procStatInp_t myProcStatInp;
    char *tmpStr;

    if (getValByKey (&procStatInp->condInput, ALL_KW) != NULL) {
        status = _rsProcStatAll (rsComm, procStatInp, procStatOut);
        return status;
    }
    if (getValByKey (&procStatInp->condInput, EXEC_LOCALLY_KW) != NULL) {
        status = localProcStat (rsComm, procStatInp, procStatOut);
        return status;
    }

    bzero (&addr, sizeof (addr));
    bzero (&myProcStatInp, sizeof (myProcStatInp));
    if (*procStatInp->addr != '\0') {	/* given input addr */
        rstrcpy (addr.hostAddr, procStatInp->addr, LONG_NAME_LEN);
        remoteFlag = resolveHost (&addr, &rodsServerHost);
    } else if ((tmpStr = getValByKey (&procStatInp->condInput, RESC_NAME_KW))
               != NULL) {
        rescGrpInfo_t *rescGrpInfo = NULL;
        status = _getRescInfo (rsComm, tmpStr, &rescGrpInfo);
        if (status < 0) {
            rodsLog (LOG_ERROR,
                     "_rsProcStat: _getRescInfo of %s error. stat = %d",
                     tmpStr, status);
            return status;
        }
        rstrcpy (procStatInp->addr, rescGrpInfo->rescInfo->rescLoc, NAME_LEN);
        rodsServerHost = (rodsServerHost_t*)rescGrpInfo->rescInfo->rodsServerHost;
        if (rodsServerHost == NULL) {
            remoteFlag = SYS_INVALID_SERVER_HOST;
        } else {
            remoteFlag = rodsServerHost->localFlag;
        }
    } else {
        /* do the IES server */
        remoteFlag = getRcatHost (MASTER_RCAT, NULL, &rodsServerHost);
    }
    if (remoteFlag < 0) {
        rodsLog (LOG_ERROR,
                 "_rsProcStat: getRcatHost() failed. erro=%d", remoteFlag);
        return (remoteFlag);
    } else if (remoteFlag == REMOTE_HOST) {
        addKeyVal (&myProcStatInp.condInput, EXEC_LOCALLY_KW, "");
        status = remoteProcStat (rsComm, &myProcStatInp, procStatOut,
                                 rodsServerHost);
        rmKeyVal (&myProcStatInp.condInput, EXEC_LOCALLY_KW);
    } else {
        status = localProcStat (rsComm, procStatInp, procStatOut);
    }
    return status;
}
Exemplo n.º 3
0
int
rsStructFileBundle (rsComm_t *rsComm,
structFileExtAndRegInp_t *structFileBundleInp)
{
#if 0
    char *destRescName = NULL;
#endif
    int status;
    rodsServerHost_t *rodsServerHost;
    int remoteFlag;
    rodsHostAddr_t rescAddr;
    dataObjInp_t dataObjInp;
    rescGrpInfo_t *rescGrpInfo = NULL;

    memset (&dataObjInp, 0, sizeof (dataObjInp));
    rstrcpy (dataObjInp.objPath, structFileBundleInp->objPath,
      MAX_NAME_LEN);

    remoteFlag = getAndConnRemoteZone (rsComm, &dataObjInp, &rodsServerHost,
      REMOTE_CREATE);

    if (remoteFlag < 0) {
        return (remoteFlag);
    } else if (remoteFlag == REMOTE_HOST) {
        status = rcStructFileBundle (rodsServerHost->conn,
          structFileBundleInp);
        return status;
    }

#if 0
    if ((destRescName = 
     getValByKey (&structFileBundleInp->condInput, DEST_RESC_NAME_KW)) == NULL 
     && (destRescName = 
     getValByKey (&structFileBundleInp->condInput, DEF_RESC_NAME_KW)) == NULL) {
        return USER_NO_RESC_INPUT_ERR;
    }

    status = _getRescInfo (rsComm, destRescName, &rescGrpInfo);
    if (status < 0) {
         rodsLog (LOG_ERROR,
          "rsStructFileBundle: _getRescInfo of %s error for %s. stat = %d",
          destRescName, structFileBundleInp->collection, status);
        return status;
    }
#else
    /* borrow conInput */
    dataObjInp.condInput = structFileBundleInp->condInput;
    status = getRescGrpForCreate (rsComm, &dataObjInp, &rescGrpInfo);
    if (status < 0) return status;
#endif

    bzero (&rescAddr, sizeof (rescAddr));
    rstrcpy (rescAddr.hostAddr, rescGrpInfo->rescInfo->rescLoc, NAME_LEN);
    remoteFlag = resolveHost (&rescAddr, &rodsServerHost);

    if (remoteFlag == LOCAL_HOST) {
        status = _rsStructFileBundle (rsComm, structFileBundleInp);
    } else if (remoteFlag == REMOTE_HOST) {
        status = remoteStructFileBundle (rsComm, structFileBundleInp, 
	  rodsServerHost);
    } else if (remoteFlag < 0) {
            status = remoteFlag;
    }
    freeAllRescGrpInfo (rescGrpInfo);
    return status;
}