blob: ed950f2b6b89db941c1e4cfc349ffcccf37cb262 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
include "../../airavata-apis/airavata_commons.thrift"
namespace java org.apache.airavata.model.data.movement
namespace php Airavata.Model.Data.Movement
namespace cpp apache.airavata.model.data.movement
namespace py apache.airavata.model.data.movement
enum DMType {
COMPUTE_RESOURCE,
STORAGE_RESOURCE
}
/**
* Enumeration of security sshKeyAuthentication and authorization mechanisms supported by Airavata. This enumeration just
* describes the supported mechanism. The corresponding security credentials are registered with Airavata Credential
* store.
*
* USERNAME_PASSWORD:
* A User Name.
*
* SSH_KEYS:
* SSH Keys
*
* FIXME: Change GSI to a more precise generic security protocol - X509
*
*/
enum SecurityProtocol {
USERNAME_PASSWORD,
SSH_KEYS,
GSI,
KERBEROS,
OAUTH,
LOCAL
}
/**
* Enumeration of data movement supported by Airavata
*
* SCP:
* Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
*
* SFTP:
* The Simple Linux Utility for Resource Management is a open source workload manager.
*
* GridFTP:
* Globus File Transfer Protocol
*
* UNICORE_STORAGE_SERVICE:
* Storage Service Provided by Unicore
*
*/
enum DataMovementProtocol {
LOCAL,
SCP,
SFTP,
GridFTP,
UNICORE_STORAGE_SERVICE
}
/**
* Data Movement through Secured Copy
*
* alternativeSCPHostName:
* If the login to scp is different than the hostname itself, specify it here
*
* sshPort:
* If a non-default port needs to used, specify it.
*/
struct SCPDataMovement {
1: required string dataMovementInterfaceId = airavata_commons.DEFAULT_ID,
2: required SecurityProtocol securityProtocol,
3: optional string alternativeSCPHostName,
4: optional i32 sshPort = 22
}
/**
* Data Movement through GridFTP
*
* alternativeSCPHostName:
* If the login to scp is different than the hostname itself, specify it here
*
* sshPort:
* If a non-default port needs to used, specify it.
*/
struct GridFTPDataMovement {
1: required string dataMovementInterfaceId = airavata_commons.DEFAULT_ID,
2: required SecurityProtocol securityProtocol,
3: required list<string> gridFTPEndPoints
}
/**
* Data Movement through UnicoreStorage
*
* unicoreEndPointURL:
* unicoreGateway End Point. The provider will query this service to fetch required service end points.
*/
struct UnicoreDataMovement {
1: required string dataMovementInterfaceId = airavata_commons.DEFAULT_ID,
2: required SecurityProtocol securityProtocol,
3: required string unicoreEndPointURL
}
/**
* LOCAL
*
* alternativeSCPHostName:
* If the login to scp is different than the hostname itself, specify it here
*
* sshPort:
* If a non-defualt port needs to used, specify it.
*/
struct LOCALDataMovement {
1: required string dataMovementInterfaceId = airavata_commons.DEFAULT_ID,
}
/**
* Data Movement Interfaces
*
* dataMovementInterfaceId: The Data Movement Interface has to be previously registered and referenced here.
*
* priorityOrder:
* For resources with multiple interfaces, the priority order should be selected.
* Lower the numerical number, higher the priority
*
*/
struct DataMovementInterface {
1: required string dataMovementInterfaceId,
2: required DataMovementProtocol dataMovementProtocol,
3: required i32 priorityOrder = 0,
}