Пример #1
0
adb_AttachVolumeResponse_t *AttachVolumeMarshal(adb_AttachVolume_t *attachVolume, const axutil_env_t *env) {
  adb_AttachVolumeResponse_t *ret=NULL;
  adb_attachVolumeResponseType_t *avrt=NULL;
  
  adb_attachVolumeType_t *avt=NULL;
  
  int rc;
  axis2_bool_t status=AXIS2_TRUE;
  char statusMessage[256];
  char *volumeId=NULL, *instanceId=NULL, *remoteDev=NULL, *localDev=NULL;
  ncMetadata ccMeta;
  
  avt = adb_AttachVolume_get_AttachVolume(attachVolume, env);
  
  EUCA_MESSAGE_UNMARSHAL(attachVolumeType, avt, (&ccMeta));
  
  volumeId = adb_attachVolumeType_get_volumeId(avt, env);
  instanceId = adb_attachVolumeType_get_instanceId(avt, env);
  remoteDev = adb_attachVolumeType_get_remoteDev(avt, env);
  localDev = adb_attachVolumeType_get_localDev(avt, env);

  status = AXIS2_TRUE;
  if (!DONOTHING) {
    rc = doAttachVolume(&ccMeta, volumeId, instanceId, remoteDev, localDev);
    if (rc) {
      logprintf("ERROR: doAttachVolume() returned FAIL\n");
      status = AXIS2_FALSE;
      snprintf(statusMessage, 255, "ERROR");
    }
  }
  
  avrt = adb_attachVolumeResponseType_create(env);
  adb_attachVolumeResponseType_set_return(avrt, env, status);
  if (status == AXIS2_FALSE) {
    adb_attachVolumeResponseType_set_statusMessage(avrt, env, statusMessage);
  }

  adb_attachVolumeResponseType_set_correlationId(avrt, env, ccMeta.correlationId);
  adb_attachVolumeResponseType_set_userId(avrt, env, ccMeta.userId);
  
  ret = adb_AttachVolumeResponse_create(env);
  adb_AttachVolumeResponse_set_AttachVolumeResponse(ret, env, avrt);

  return(ret);
}
Пример #2
0
adb_ncAttachVolumeResponse_t* ncAttachVolumeMarshal (adb_ncAttachVolume_t* ncAttachVolume, const axutil_env_t *env)
{
    pthread_mutex_lock(&ncHandlerLock);
    adb_ncAttachVolumeType_t * input          = adb_ncAttachVolume_get_ncAttachVolume(ncAttachVolume, env);
    adb_ncAttachVolumeResponse_t * response   = adb_ncAttachVolumeResponse_create(env);
    adb_ncAttachVolumeResponseType_t * output = adb_ncAttachVolumeResponseType_create(env);

    // get standard fields from input
    axis2_char_t * correlationId = adb_ncAttachVolumeType_get_correlationId(input, env);
    axis2_char_t * userId = adb_ncAttachVolumeType_get_userId(input, env);

    // get operation-specific fields from input
    axis2_char_t * instanceId = adb_ncAttachVolumeType_get_instanceId(input, env);
    axis2_char_t * volumeId = adb_ncAttachVolumeType_get_volumeId(input, env);
    axis2_char_t * remoteDev = adb_ncAttachVolumeType_get_remoteDev(input, env);
    axis2_char_t * localDev = adb_ncAttachVolumeType_get_localDev(input, env);

    eventlog("NC", userId, correlationId, "AttachVolume", "begin");
    { // do it
        ncMetadata meta = { correlationId, userId };

        int error = doAttachVolume (&meta, instanceId, volumeId, remoteDev, localDev);
    
        if (error) {
            logprintfl (EUCAERROR, "ERROR: doAttachVolume() failed error=%d\n", error);
            adb_ncAttachVolumeResponseType_set_return(output, env, AXIS2_FALSE);
            adb_ncAttachVolumeResponseType_set_correlationId(output, env, correlationId);
            adb_ncAttachVolumeResponseType_set_userId(output, env, userId);
        } else {
            // set standard fields in output
            adb_ncAttachVolumeResponseType_set_return(output, env, AXIS2_TRUE);
            adb_ncAttachVolumeResponseType_set_correlationId(output, env, correlationId);
            adb_ncAttachVolumeResponseType_set_userId(output, env, userId);
            // no operation-specific fields in output
        }
    }
    // set response to output
    adb_ncAttachVolumeResponse_set_ncAttachVolumeResponse(response, env, output);
    pthread_mutex_unlock(&ncHandlerLock);
    
    eventlog("NC", userId, correlationId, "AttachVolume", "end");
    return response;
}
Пример #3
0
//!
//! Handles the client attach volume request.
//!
//! @param[in] pStub a pointer to the node controller (NC) stub structure
//! @param[in] pMeta a pointer to the node controller (NC) metadata structure
//! @param[in] instanceId the instance identifier string (i-XXXXXXXX)
//! @param[in] volumeId the volume identifier string (vol-XXXXXXXX)
//! @param[in] remoteDev the target device name
//! @param[in] localDev the local device name
//!
//! @return the result of doAttachVolume()
//!
//! @see doAttachVolume()
//!
int ncAttachVolumeStub(ncStub * pStub, ncMetadata * pMeta, char *instanceId, char *volumeId, char *remoteDev, char *localDev)
{
    return doAttachVolume(pMeta, instanceId, volumeId, remoteDev, localDev);
}