code: public CreateVolumeResponse createVolume(CreateVolumeRequest request) {
          checkNotNull(request, "request should not be null.");
          if (Strings.isNullOrEmpty(request.getClientToken())) {
              request.setClientToken(this.generateClientToken());
          }
          if (null == request.getBilling()) {
              request.setBilling(generateDefaultBilling());
          }
          InternalRequest internalRequest = this.createRequest(request, HttpMethodName.POST, VOLUME_PREFIX);
          internalRequest.addParameter("clientToken", request.getClientToken());
          fillPayload(internalRequest, request);
          return invokeHttpClient(internalRequest, CreateVolumeResponse.class);
      }
docs: Create a volume with the specified options.
  
  You can use this method to create a new empty volume by specified options
  or you  can create a new volume from customized volume snapshot but not system disk snapshot.
  By using the cdsSizeInGB parameter you can create a newly empty volume.
  By using snapshotId parameter to create a volume form specific snapshot.
  
  @param request The request containing all options for creating a volume.
  @return The response with list of id of volumes newly created.