You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2016/02/08 17:49:29 UTC

[47/50] [abbrv] airavata git commit: update generated code and fixing compilation issues

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
index 3fabb7d..ee0d60d 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/Airavata_server.skeleton.cpp
@@ -210,6 +210,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Get a Public Key by Providing the Token
    * 
    * @param CredStoreToken
@@ -231,6 +232,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Get all Public Keys of the Gateway
    * 
    * @param CredStoreToken
@@ -252,6 +254,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Delete a Gateway
    * 
    * @param gatewayId
@@ -272,6 +275,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Creates a Project with basic metadata.
    *    A Project is a container of experiments.
    * 
@@ -279,7 +283,7 @@ class AiravataHandler : virtual public AiravataIf {
    *    The identifier for the requested gateway.
    * 
    * @param Project
-   *    The Project Object described in the workspace_model
+   *    The Project Object described in the workspace_model.
    * 
    * 
    * 
@@ -293,6 +297,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update an Existing Project
    * 
    * @param projectId
@@ -313,14 +318,15 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Get a Project by ID
-   *    This method is to obtain a project by providing a projectId
+   *    This method is to obtain a project by providing a projectId.
    * 
    * @param projectId
-   *    projectId of the project you require
+   *    projectId of the project you require.
    * 
    * @return project
-   *    project data model will be returned
+   *    project data model will be returned.
    * 
    * 
    * 
@@ -333,15 +339,18 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Delete a Project
-   *    This method is used to delete an existing Project
+   *    This method is used to delete an existing Project.
    * 
    * @param projectId
-   *    projectId of the project you want to delete
+   *    projectId of the project you want to delete.
    * 
    * @return boolean
    *    Boolean identifier for the success or failure of the deletion operation.
    * 
+   *    NOTE: This method is not used within gateways connected with Airavata.
+   * 
    * 
    * 
    * @param authzToken
@@ -353,20 +362,21 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Get all Project by user with pagination. Results will be ordered based
-   * on creation time DESC
+   * 
+   * Get All User Projects
+   * Get all Project for the user with pagination. Results will be ordered based on creation time DESC.
    * 
    * @param gatewayId
    *    The identifier for the requested gateway.
    * 
    * @param userName
-   *    The identifier of the user
+   *    The identifier of the user.
    * 
    * @param limit
-   *    The amount results to be fetched
+   *    The amount results to be fetched.
    * 
    * @param offset
-   *    The starting point of the results to be fetched
+   *    The starting point of the results to be fetched.
    * 
    * 
    * 
@@ -382,19 +392,25 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Get all Project for user by project name with pagination.Results will be ordered based
-   * on creation time DESC
+   * 
+   * Search User Projects by Project Name
+   * Get all Project for user by project name with pagination.Results will be ordered based on creation time DESC.
    * 
    * @param gatewayId
-   *    The identifier for the requested gateway.
+   *    The unique identifier for the requested gateway.
+   * 
    * @param userName
-   *    The identifier of the user
+   *    The identifier of the user.
+   * 
    * @param projectName
-   *    The name of the project on which the results to be fetched
+   *    The name of the project on which the results to be fetched.
+   * 
    * @param limit
-   *    The amount results to be fetched
+   *    The amount results to be fetched.
+   * 
    * @param offset
-   *    The starting point of the results to be fetched
+   *    The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -410,19 +426,25 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Search and get all Projects for user by project description with pagination. Results
-   * will be ordered based on creation time DESC
+   * 
+   * Search User Projects by Project Description
+   * Search and get all Projects for user by project description with pagination. Results will be ordered based on creation time DESC.
    * 
    * @param gatewayId
-   *    The identifier for the requested gateway.
+   *    The unique identifier of the gateway making the request.
+   * 
    * @param userName
-   *    The identifier of the user
+   *    The identifier of the user.
+   * 
    * @param description
-   *    The description to be matched
+   *    The description to be matched.
+   * 
    * @param limit
-   *    The amount results to be fetched
+   *    The amount results to be fetched.
+   * 
    * @param offset
-   *    The starting point of the results to be fetched
+   *    The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -438,19 +460,25 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Search Experiments by experiment name with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search User Experiments by Name
+   * Search user Experiments using experiment name with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the user who created the experiments.
+   * 
    * @param expName
-   *       Experiment name to be matched
+   *       Experiment name to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -466,19 +494,25 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Search Experiments by experiment name with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search By Experiment Description
+   * Search Experiments by experiment description with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested user.
+   * 
    * @param description
-   *       Experiment description to be matched
+   *       Experiment description to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -494,19 +528,25 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Search Experiments by application id with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search Experiment By the Application
+   * Search Experiments of a particular application id with pagination. Results will be sorted based on creation time DESC
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested user.
+   * 
    * @param applicationId
-   *       Application id to be matched
+   *       Application id to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -522,19 +562,25 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Search Experiments by experiment status with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search User Experiments by Status
+   * Search all the Experiments of the given user  by experiment status with pagination. Results will be sorted based on creation time DESC
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the user making the request.
+   * 
    * @param experimentState
-   *       Experiement state to be matched
+   *       Experiement state to be matched.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -550,21 +596,31 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Search Experiments by experiment creation time with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Search User Experiments by the Creation Time
+   * This will search all the experiments of the given user by experiment creation time with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested user.
+   * 
    * @param fromTime
-   *       Start time of the experiments creation time
+   *       Start time of the experiments creation time.
+   * 
    * @param toTime
-   *       End time of the  experiement creation time
+   *       End time of the  experiement creation time.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
+   * @return ExperimentSummaryModel
+   *    List of experiments for the given search filter. Here only the Experiment summary will be returned.
+   * 
    * 
    * 
    * @param authzToken
@@ -581,19 +637,27 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Search Experiments by using multiple filter criteria with pagination. Results will be sorted
-   * based on creation time DESC
+   * Search Experiments.
+   * Search Experiments by using multiple filter criteria with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Identifier of the requested gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the user requesting the search function.
+   * 
    * @param filters
-   *       map of multiple filter criteria.
+   *       Map of multiple filter criteria. Currenlt search filters includes Experiment Name, Description, Application, etc....
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
+   * @return ExperimentSummaryModel
+   *    List of experiments for the given search filter. Here only the Experiment summary will be returned.
+   * 
    * 
    * 
    * @param authzToken
@@ -609,13 +673,19 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Get Experiment Statisitics for the given gateway for a specific time period
+   * 
+   * Get Experiment Statistics
+   * Get Experiment Statisitics for a given gateway for a specific time period. This feature is available only for admins of a particular gateway. Gateway admin access is managed by the user roles.
+   * 
    * @param gatewayId
-   *       Identifier of the requested gateway
+   *       Unique identifier of the gateway making the request to fetch statistics.
+   * 
    * @param fromTime
-   *       Starting date time
+   *       Starting date time.
+   * 
    * @param toTime
-   *       Ending data time
+   *       Ending data time.
+   * 
    * 
    * 
    * @param authzToken
@@ -629,15 +699,19 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Get Experiments within project with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Get All Experiments of the Project
+   * Get Experiments within project with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param projectId
-   *       Identifier of the project
+   *       Uniqie identifier of the project.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -651,17 +725,22 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Get experiments by user with pagination. Results will be sorted
-   * based on creation time DESC
+   * 
+   * Get All Experiments of the User
+   * Get experiments by user with pagination. Results will be sorted based on creation time DESC.
    * 
    * @param gatewayId
-   *       Identifier of the requesting gateway
+   *       Identifier of the requesting gateway.
+   * 
    * @param userName
-   *       Username of the requested user
+   *       Username of the requested end user.
+   * 
    * @param limit
-   *       Amount of results to be fetched
+   *       Amount of results to be fetched.
+   * 
    * @param offset
-   *       The starting point of the results to be fetched
+   *       The starting point of the results to be fetched.
+   * 
    * 
    * 
    * @param authzToken
@@ -676,12 +755,17 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   *   *
+   *   * Create New Experiment
    *   * Create an experiment for the specified user belonging to the gateway. The gateway identity is not explicitly passed
    *   *   but inferred from the sshKeyAuthentication header. This experiment is just a persistent place holder. The client
    *   *   has to subsequently configure and launch the created experiment. No action is taken on Airavata Server except
    *   *   registering the experiment in a persistent store.
    *   *
-   *   * @param basicExperimentMetadata
+   *   * @param gatewayId
+   *   *    The unique ID of the gateway where the experiment is been created.
+   *   *
+   *   * @param ExperimentModel
    *   *    The create experiment will require the basic experiment metadata like the name and description, intended user,
    *   *      the gateway identifer and if the experiment should be shared public by defualt. During the creation of an experiment
    *   *      the ExperimentMetadata is a required field.
@@ -721,8 +805,8 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Delete an Experiment
    * 
+   * Delete an Experiment
    * If the experiment is not already launched experiment can be deleted.
    * 
    * @param authzToken
@@ -731,7 +815,7 @@ class AiravataHandler : virtual public AiravataIf {
    *     Experiment ID of the experimnet you want to delete.
    * 
    * @return boolean
-   *     Identifier for the success or failure of the deletion operation
+   *     Identifier for the success or failure of the deletion operation.
    * 
    * 
    * 
@@ -744,12 +828,14 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   *   *
+   *   * Get Experiment
    *   * Fetch previously created experiment metadata.
    *   *
    *   * @param airavataExperimentId
-   *   *    The identifier for the requested experiment. This is returned during the create experiment step.
+   *   *    The unique identifier of the requested experiment. This ID is returned during the create experiment step.
    *   *
-   *   * @return experimentMetada
+   *   * @return ExperimentModel
    *   *   This method will return the previously stored experiment metadata.
    *   *
    *   * @throws org.apache.airavata.model.error.InvalidRequestException
@@ -786,14 +872,17 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
+   * Get Complete Experiment Details
    * Fetch the completed nested tree structue of previously created experiment metadata which includes processes ->
    * tasks -> jobs information.
    * 
    * @param airavataExperimentId
    *    The identifier for the requested experiment. This is returned during the create experiment step.
    * 
-   * @return experimentMetada
-   *   This method will return the previously stored experiment metadata.
+   * @return ExperimentModel
+   *   This method will return the previously stored experiment metadata including application input parameters, computational resource scheduling
+   *   information, special input output handling and additional quality of service parameters.
    * 
    * @throws org.apache.airavata.model.error.InvalidRequestException
    *    For any incorrect forming of the request itself.
@@ -828,14 +917,15 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Configure a previously created experiment with required inputs, scheduling and other quality of service
-   *   parameters. This method only updates the experiment object within the registry. The experiment has to be launched
-   *   to make it actionable by the server.
+   * 
+   * Update a Previously Created Experiment
+   * Configure the CREATED experiment with required inputs, scheduling and other quality of service parameters. This method only updates the experiment object within the registry.
+   * The experiment has to be launched to make it actionable by the server.
    * 
    * @param airavataExperimentId
    *    The identifier for the requested experiment. This is returned during the create experiment step.
    * 
-   * @param experimentConfigurationData
+   * @param ExperimentModel
    *    The configuration information of the experiment with application input parameters, computational resource scheduling
    *      information, special input output handling and additional quality of service parameters.
    * 
@@ -887,13 +977,14 @@ class AiravataHandler : virtual public AiravataIf {
 
   /**
    *  *
-   *  * Validate experiment configuration. A true in general indicates, the experiment is ready to be launched.
-   *  *
-   *  * @param experimentId
+   *  * Validate experiment configuration.
+   *  * A true in general indicates, the experiment is ready to be launched.
    *  *
+   *  * @param airavataExperimentId
+   *  *    Unique identifier of the experiment (Experimnent ID) of the experiment which need to be validated.
    *  *
    *  * @return boolean
-   *  *      Identifier for the success or failure of the validation operation
+   *  *      Identifier for the success or failure of the validation operation.
    *  *
    * *
    * 
@@ -906,8 +997,12 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Launch a previously created and configured experiment. Airavata Server will then start processing the request and appropriate
-   *   notifications and intermediate and output data will be subsequently available for this experiment.
+   * 
+   * Launch a Previously Created & Configured Experiment.
+   * Airavata Server will then start processing the request and appropriate notifications and intermediate and output data will be subsequently available for this experiment.
+   * 
+   * @gatewayId
+   *    ID of the gateway which will launch the experiment.
    * 
    * @param airavataExperimentId
    *    The identifier for the requested experiment. This is returned during the create experiment step.
@@ -949,17 +1044,18 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Get Experiment Status
    * 
-   * Obtain the status os an experiment by providing the Experiment Id
+   * Obtain the status of an experiment by providing the Experiment Id
    * 
    * @param authzToken
    * 
-   * @param experiementId
-   *     Experiment ID of the experimnet you require the status
+   * @param airavataExperimentId
+   *     Experiment ID of the experimnet you require the status.
    * 
    * @return ExperimentStatus
-   *     ExperimentStatus model with current status will be returned.
+   *     ExperimentStatus model with the current status will be returned.
    * 
    * 
    * 
@@ -972,16 +1068,17 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Get Experiment Outputs
-   * This method to be used when need to obtain outputs of a certain Experiment
+   * This method to be used when need to obtain final outputs of a certain Experiment
    * 
    * @param authzToken
    * 
-   * @param experiementId
-   *     Experiment ID of the experimnet you need the outputs
+   * @param airavataExperimentId
+   *     Experiment ID of the experimnet you need the outputs.
    * 
    * @return list
-   *     List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+   *     List of experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
    * 
    * 
    * 
@@ -994,16 +1091,17 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Get Intermediate Experiment Outputs
    * This method to be used when need to obtain intermediate outputs of a certain Experiment
    * 
    * @param authzToken
    * 
-   * @param experiementId
-   *     Experiment ID of the experimnet you need the intermediate outputs
+   * @param airavataExperimentId
+   *     Experiment ID of the experimnet you need intermediate outputs.
    * 
    * @return list
-   *     List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment
+   *     List of intermediate experiment outputs will be returned. They will be returned as a list of OutputDataObjectType for the experiment.
    * 
    * 
    * 
@@ -1016,13 +1114,14 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Get Job Status for an Experiment
+   * 
+   * Get Job Statuses for an Experiment
    * This method to be used when need to get the job status of an Experiment. An experiment may have one or many jobs; there for one or many job statuses may turnup
    * 
    * @param authzToken
    * 
    * @param experiementId
-   *     Experiment ID of the experimnet you need the intermediate outputs
+   *     Experiment ID of the experimnet you need the job statuses.
    * 
    * @return JobStatus
    *     Job status (string) for all all the existing jobs for the experiment will be returned in the form of a map
@@ -1038,16 +1137,17 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Get Job Details for all the jobs within an Experiment
+   * 
+   * Get Job Details for all the jobs within an Experiment.
    * This method to be used when need to get the job details for one or many jobs of an Experiment.
    * 
    * @param authzToken
    * 
    * @param experiementId
-   *     Experiment ID of the experimnet you need job details
+   *     Experiment ID of the experimnet you need job details.
    * 
    * @return list of JobDetails
-   *     Job details
+   *     Job details.
    * 
    * 
    * 
@@ -1060,7 +1160,9 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Clone an specified experiment with a new name. A copy of the experiment configuration is made and is persisted with new metadata.
+   * 
+   * Clone an Existing Experiment
+   * Existing specified experiment is cloned and a new name is provided. A copy of the experiment configuration is made and is persisted with new metadata.
    *   The client has to subsequently update this configuration if needed and launch the cloned experiment.
    * 
    * @param newExperimentName
@@ -1072,7 +1174,7 @@ class AiravataHandler : virtual public AiravataIf {
    *      should be shared public by default.
    * 
    * @return
-   *   The server-side generated.airavata.registry.core.experiment.globally unique identifier for the newly cloned experiment.
+   *   The server-side generated.airavata.registry.core.experiment.globally unique identifier (Experiment ID) for the newly cloned experiment.
    * 
    * @throws org.apache.airavata.model.error.InvalidRequestException
    *    For any incorrect forming of the request itself.
@@ -1108,12 +1210,16 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Terminate a running experiment.
+   * 
+   * Terminate a running Experiment.
+   * 
+   * @gatewayId
+   *    ID of the gateway which will terminate the running Experiment.
    * 
    * @param airavataExperimentId
-   *    The identifier for the requested experiment. This is returned during the create experiment step.
+   *    The identifier of the experiment required termination. This ID is returned during the create experiment step.
    * 
-   * @return
+   * @return status
    *   This method call does not have a return value.
    * 
    * @throws org.apache.airavata.model.error.InvalidRequestException
@@ -1150,13 +1256,17 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Register a Application Module.
    * 
+   * @gatewayId
+   *    ID of the gateway which is registering the new Application Module.
+   * 
    * @param applicationModule
    *    Application Module Object created from the datamodel.
    * 
    * @return appModuleId
-   *   Returns a server-side generated airavata appModule globally unique identifier.
+   *   Returns the server-side generated airavata appModule globally unique identifier.
    * 
    * 
    * @param authzToken
@@ -1169,13 +1279,14 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Fetch a Application Module.
    * 
    * @param appModuleId
-   *   The identifier for the requested application module
+   *   The unique identifier of the application module required
    * 
    * @return applicationModule
-   *   Returns a application Module Object.
+   *   Returns an Application Module Object.
    * 
    * 
    * @param authzToken
@@ -1187,6 +1298,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update a Application Module.
    * 
    * @param appModuleId
@@ -1208,16 +1320,31 @@ class AiravataHandler : virtual public AiravataIf {
     printf("updateApplicationModule\n");
   }
 
+  /**
+   * 
+   * Fetch all Application Module Descriptions.
+   * 
+   * @param gatewayId
+   *    ID of the gateway which need to list all available application deployment documentation.
+   * 
+   * @return list
+   *    Returns the list of all Application Module Objects.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayId
+   */
   void getAllAppModules(std::vector< ::apache::airavata::model::appcatalog::appdeployment::ApplicationModule> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId) {
     // Your implementation goes here
     printf("getAllAppModules\n");
   }
 
   /**
-   * Delete a Application Module.
+   * 
+   * Delete an Application Module.
    * 
    * @param appModuleId
-   *   The identifier for the requested application module to be deleted.
+   *   The identifier of the Application Module to be deleted.
    * 
    * @return status
    *   Returns a success/failure of the deletion.
@@ -1232,9 +1359,13 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Register a Application Deployment.
    * 
-   * @param applicationModule
+   * Register an Application Deployment.
+   * 
+   * @param gatewayId
+   *    ID of the gateway which is registering the new Application Deployment.
+   * 
+   * @param applicationDeployment
    *    Application Module Object created from the datamodel.
    * 
    * @return appDeploymentId
@@ -1251,6 +1382,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Fetch a Application Deployment.
    * 
    * @param appDeploymentId
@@ -1269,10 +1401,11 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Update a Application Deployment.
+   * 
+   * Update an Application Deployment.
    * 
    * @param appDeploymentId
-   *   The identifier for the requested application deployment to be updated.
+   *   The identifier of the requested application deployment to be updated.
    * 
    * @param appDeployment
    *    Application Deployment Object created from the datamodel.
@@ -1291,10 +1424,11 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Delete a Application deployment.
+   * 
+   * Delete an Application Deployment.
    * 
    * @param appDeploymentId
-   *   The identifier for the requested application deployment to be deleted.
+   *   The unique identifier of application deployment to be deleted.
    * 
    * @return status
    *   Returns a success/failure of the deletion.
@@ -1309,10 +1443,14 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Fetch all Application Deployment Descriptions.
    * 
+   * @param gatewayId
+   *    ID of the gateway which need to list all available application deployment documentation.
+   * 
    * @return list<applicationDeployment.
-   *   Returns the list of all application Deployment Objects.
+   *    Returns the list of all application Deployment Objects.
    * 
    * 
    * @param authzToken
@@ -1342,9 +1480,10 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Register a Application Interface.
    * 
-   * @param applicationModule
+   * @param applicationInterface
    *    Application Module Object created from the datamodel.
    * 
    * @return appInterfaceId
@@ -1360,20 +1499,42 @@ class AiravataHandler : virtual public AiravataIf {
     printf("registerApplicationInterface\n");
   }
 
+  /**
+   * 
+   * Clone an Application Interface.
+   * 
+   * @gatewayId
+   *    The identifier for the gateway profile to be requested
+   * 
+   * @param existingAppInterfaceID
+   *    Identifier of the existing Application interface you wich to clone.
+   * 
+   * @param newApplicationName
+   *    Name for the new application interface.
+   * 
+   * @return appInterfaceId
+   *    Returns a server-side generated globally unique identifier for the newly cloned application interface.
+   * 
+   * 
+   * @param authzToken
+   * @param existingAppInterfaceID
+   * @param newApplicationName
+   * @param gatewayId
+   */
   void cloneApplicationInterface(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& existingAppInterfaceID, const std::string& newApplicationName, const std::string& gatewayId) {
     // Your implementation goes here
     printf("cloneApplicationInterface\n");
   }
 
   /**
-   * Fetch a Application Interface.
+   * 
+   * Fetch an Application Interface.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application module
+   *   The identifier for the requested application interface.
    * 
    * @return applicationInterface
-   *   Returns a application Interface Object.
-   * 
+   *   Returns an application Interface Object.
    * 
    * 
    * @param authzToken
@@ -1385,10 +1546,11 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update a Application Interface.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application deployment to be updated.
+   *   The identifier of the requested application deployment to be updated.
    * 
    * @param appInterface
    *    Application Interface Object created from the datamodel.
@@ -1397,7 +1559,6 @@ class AiravataHandler : virtual public AiravataIf {
    *   Returns a success/failure of the update.
    * 
    * 
-   * 
    * @param authzToken
    * @param appInterfaceId
    * @param applicationInterface
@@ -1408,7 +1569,8 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Delete a Application Interface.
+   * 
+   * Delete an Application Interface.
    * 
    * @param appInterfaceId
    *   The identifier for the requested application interface to be deleted.
@@ -1417,7 +1579,6 @@ class AiravataHandler : virtual public AiravataIf {
    *   Returns a success/failure of the deletion.
    * 
    * 
-   * 
    * @param authzToken
    * @param appInterfaceId
    */
@@ -1427,11 +1588,12 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Fetch name and id of  Application Interface documents.
+   * 
+   * Fetch name and ID of  Application Interface documents.
    * 
    * 
    * @return map<applicationId, applicationInterfaceNames>
-   *   Returns a list of application interfaces with corresponsing id's
+   *   Returns a list of application interfaces with corresponsing ID's
    * 
    * 
    * @param authzToken
@@ -1443,11 +1605,12 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Fetch all Application Interface documents.
    * 
    * 
    * @return map<applicationId, applicationInterfaceNames>
-   *   Returns a list of application interfaces documents
+   *   Returns a list of application interfaces documents (Application Interface ID, name, description, Inputs and Outputs objects).
    * 
    * 
    * @param authzToken
@@ -1459,10 +1622,11 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Fetch the list of Application Inputs.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application interface
+   *   The identifier of the application interface which need inputs to be fetched.
    * 
    * @return list<application_interface_model.InputDataObjectType>
    *   Returns a list of application inputs.
@@ -1477,10 +1641,11 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Fetch the list of Application Outputs.
+   * 
+   * Fetch list of Application Outputs.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application interface
+   *   The identifier of the application interface which need outputs to be fetched.
    * 
    * @return list<application_interface_model.OutputDataObjectType>
    *   Returns a list of application outputs.
@@ -1495,14 +1660,15 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Fetch a list of all deployed Compute Hosts for a given application interfaces.
    * 
    * @param appInterfaceId
-   *   The identifier for the requested application interface
+   *   The identifier for the requested application interface.
    * 
    * @return map<computeResourceId, computeResourceName>
    *   A map of registered compute resource id's and their corresponding hostnames.
-   *    Deployments of each modules listed within the interfaces will be listed.
+   *   Deployments of each modules listed within the interfaces will be listed.
    * 
    * 
    * @param authzToken
@@ -1550,6 +1716,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Fetch all registered Compute Resources.
    * 
    * @return A map of registered compute resource id's and thier corresponding hostnames.
@@ -1654,7 +1821,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * Update a Compute Resource.
+   * Update a Storage Resource.
    * 
    * @param storageResourceId
    *   The identifier for the requested compute resource to be updated.
@@ -1679,7 +1846,7 @@ class AiravataHandler : virtual public AiravataIf {
    * Delete a Storage Resource.
    * 
    * @param storageResourceId
-   *   The identifier for the requested compute resource to be deleted.
+   *   The identifier of the requested compute resource to be deleted.
    * 
    * @return status
    *   Returns a success/failure of the deletion.
@@ -1827,6 +1994,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Add a UNICORE Job Submission details to a compute resource
    *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
    * 
@@ -1854,10 +2022,13 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   *   *
    *   * This method returns UnicoreJobSubmission object
+   *   *
    *   * @param jobSubmissionInterfaceId
    *   *   The identifier of the JobSubmission Interface to be retrieved.
    *   *  @return UnicoreJobSubmission instance
+   *   *
    * *
    * 
    * @param authzToken
@@ -1869,6 +2040,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   *    *
    *    * Add a Cloud Job Submission details to a compute resource
    *    *  App catalog will return a jobSubmissionInterfaceId which will be added to the jobSubmissionInterfaces.
    *    *
@@ -1883,6 +2055,7 @@ class AiravataHandler : virtual public AiravataIf {
    *    *
    *    * @return status
    *    *   Returns the unique job submission id.
+   *    *
    * *
    * 
    * @param authzToken
@@ -1896,6 +2069,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   *    *
    *    * This method returns cloudJobSubmission object
    *    * @param jobSubmissionInterfaceI
    *        *   The identifier of the JobSubmission Interface to be retrieved.
@@ -1911,6 +2085,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update the given SSH Job Submission details
    * 
    * @param jobSubmissionInterfaceId
@@ -1933,6 +2108,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update the cloud Job Submission details
    * 
    * @param jobSubmissionInterfaceId
@@ -1955,6 +2131,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update the UNIOCRE Job Submission details
    * 
    * @param jobSubmissionInterfaceId
@@ -1978,6 +2155,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Add a Local data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2010,6 +2188,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update the given Local data movement details
    * 
    * @param dataMovementInterfaceId
@@ -2033,7 +2212,8 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   * This method returns local datamovement object
+   * 
+   * This method returns local datamovement object.
    * 
    * @param dataMovementId
    *   The identifier of the datamovement Interface to be retrieved.
@@ -2051,6 +2231,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Add a SCP data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2079,6 +2260,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update the given scp data movement details
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2120,6 +2302,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Add a UNICORE data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2148,6 +2331,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Update a selected UNICORE data movement details
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2172,6 +2356,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * This method returns UNICORE datamovement object
    * 
    * @param dataMovementId
@@ -2190,6 +2375,7 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
+   * 
    * Add a GridFTP data movement details to a compute resource
    *  App catalog will return a dataMovementInterfaceId which will be added to the dataMovementInterfaces.
    * 
@@ -2453,7 +2639,7 @@ class AiravataHandler : virtual public AiravataIf {
    * Fetch the given Gateway Resource Profile.
    * 
    * @param gatewayID
-   *   The identifier for the requested gateway resource
+   *   The identifier for the requested gateway resource.
    * 
    * @return gatewayResourceProfile
    *    Gateway Resource Profile Object.
@@ -2534,12 +2720,35 @@ class AiravataHandler : virtual public AiravataIf {
     printf("addGatewayComputeResourcePreference\n");
   }
 
+  /**
+   * Add a Storage Resource Preference to a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be added.
+   * 
+   * @param storageResourceId
+   *   Preferences related to a particular compute resource
+   * 
+   * @param computeResourcePreference
+   *   The ComputeResourcePreference object to be added to the resource profile.
+   * 
+   * @return status
+   *   Returns a success/failure of the addition. If a profile already exists, this operation will fail.
+   *    Instead an update should be used.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayID
+   * @param storageResourceId
+   * @param storagePreference
+   */
   bool addGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageResourceId, const  ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& storagePreference) {
     // Your implementation goes here
     printf("addGatewayStoragePreference\n");
   }
 
   /**
+   * 
    * Fetch a Compute Resource Preference of a registered gateway profile.
    * 
    * @param gatewayID
@@ -2561,12 +2770,31 @@ class AiravataHandler : virtual public AiravataIf {
     printf("getGatewayComputeResourcePreference\n");
   }
 
+  /**
+   * 
+   * Fetch a Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to request to fetch the particular storage resource preference.
+   * 
+   * @param storageResourceId
+   *   Identifier of the Stprage Preference required to be fetched.
+   * 
+   * @return StoragePreference
+   *   Returns the StoragePreference object.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayID
+   * @param storageResourceId
+   */
   void getGatewayStoragePreference( ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageResourceId) {
     // Your implementation goes here
     printf("getGatewayStoragePreference\n");
   }
 
   /**
+   * 
    * Fetch all Compute Resource Preferences of a registered gateway profile.
    * 
    * @param gatewayID
@@ -2584,13 +2812,31 @@ class AiravataHandler : virtual public AiravataIf {
     printf("getAllGatewayComputeResourcePreferences\n");
   }
 
+  /**
+   * Fetch all Storage Resource Preferences of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier for the gateway profile to be requested
+   * 
+   * @return StoragePreference
+   *   Returns the StoragePreference object.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayID
+   */
   void getAllGatewayStoragePreferences(std::vector< ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID) {
     // Your implementation goes here
     printf("getAllGatewayStoragePreferences\n");
   }
 
   /**
-   * Fetch all gateway profiles registered
+   * 
+   * Fetch all Gateway Profiles registered
+   * 
+   * @return GatewayResourceProfile
+   *   Returns all the GatewayResourcePrifle list object.
+   * 
    * 
    * 
    * @param authzToken
@@ -2626,6 +2872,27 @@ class AiravataHandler : virtual public AiravataIf {
     printf("updateGatewayComputeResourcePreference\n");
   }
 
+  /**
+   * Update a Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be updated.
+   * 
+   * @param storageId
+   *   The Storage resource identifier of the one that you want to update
+   * 
+   * @param storagePreference
+   *   The storagePreference object to be updated to the resource profile.
+   * 
+   * @return status
+   *   Returns a success/failure of the updation.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayID
+   * @param storageId
+   * @param storagePreference
+   */
   bool updateGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageId, const  ::apache::airavata::model::appcatalog::gatewayprofile::StoragePreference& storagePreference) {
     // Your implementation goes here
     printf("updateGatewayStoragePreference\n");
@@ -2653,17 +2920,58 @@ class AiravataHandler : virtual public AiravataIf {
     printf("deleteGatewayComputeResourcePreference\n");
   }
 
+  /**
+   * Delete the Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be deleted.
+   * 
+   * @param storageId
+   *   ID of the storage preference you want to delete.
+   * 
+   * @return status
+   *   Returns a success/failure of the deletion.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayID
+   * @param storageId
+   */
   bool deleteGatewayStoragePreference(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayID, const std::string& storageId) {
     // Your implementation goes here
     printf("deleteGatewayStoragePreference\n");
   }
 
+  /**
+   * Delete the Storage Resource Preference of a registered gateway profile.
+   * 
+   * @param gatewayID
+   *   The identifier of the gateway profile to be deleted.
+   * 
+   * @param storageId
+   *   ID of the storage preference you want to delete.
+   * 
+   * @return status
+   *   Returns a success/failure of the deletion.
+   * 
+   * 
+   * @param authzToken
+   * @param gatewayId
+   */
   void getAllWorkflows(std::vector<std::string> & _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId) {
     // Your implementation goes here
     printf("getAllWorkflows\n");
   }
 
-  void getWorkflow( ::Workflow& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId) {
+  /**
+   * 
+   * API Methods Related for Work-Flow Submission Features.
+   * 
+   * 
+   * @param authzToken
+   * @param workflowTemplateId
+   */
+  void getWorkflow( ::WorkflowModel& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId) {
     // Your implementation goes here
     printf("getWorkflow\n");
   }
@@ -2673,12 +2981,12 @@ class AiravataHandler : virtual public AiravataIf {
     printf("deleteWorkflow\n");
   }
 
-  void registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::Workflow& workflow) {
+  void registerWorkflow(std::string& _return, const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& gatewayId, const  ::WorkflowModel& workflow) {
     // Your implementation goes here
     printf("registerWorkflow\n");
   }
 
-  void updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::Workflow& workflow) {
+  void updateWorkflow(const  ::apache::airavata::model::security::AuthzToken& authzToken, const std::string& workflowTemplateId, const  ::WorkflowModel& workflow) {
     // Your implementation goes here
     printf("updateWorkflow\n");
   }
@@ -2694,7 +3002,9 @@ class AiravataHandler : virtual public AiravataIf {
   }
 
   /**
-   *  * Data Manager Related API Methods
+   *  *
+   *  * Data Manager Related API Methods.
+   *  *
    * *
    * 
    * @param authzToken

http://git-wip-us.apache.org/repos/asf/airavata/blob/4c790770/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflow_data_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflow_data_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflow_data_model_types.cpp
index 6c8c6cc..b87ae6d 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflow_data_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/workflow_data_model_types.cpp
@@ -30,40 +30,92 @@
 
 
 
+int _kWorkflowStateValues[] = {
+  WorkflowState::CREATED,
+  WorkflowState::STARTED,
+  WorkflowState::EXECUTING,
+  WorkflowState::COMPLETED,
+  WorkflowState::FAILED,
+  WorkflowState::CANCELLING,
+  WorkflowState::CANCELED
+};
+const char* _kWorkflowStateNames[] = {
+  "CREATED",
+  "STARTED",
+  "EXECUTING",
+  "COMPLETED",
+  "FAILED",
+  "CANCELLING",
+  "CANCELED"
+};
+const std::map<int, const char*> _WorkflowState_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(7, _kWorkflowStateValues, _kWorkflowStateNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
-Workflow::~Workflow() throw() {
+int _kComponentStateValues[] = {
+  ComponentState::CREATED,
+  ComponentState::WAITING,
+  ComponentState::READY,
+  ComponentState::RUNNING,
+  ComponentState::COMPLETED,
+  ComponentState::FAILED,
+  ComponentState::CANCELED
+};
+const char* _kComponentStateNames[] = {
+  "CREATED",
+  "WAITING",
+  "READY",
+  "RUNNING",
+  "COMPLETED",
+  "FAILED",
+  "CANCELED"
+};
+const std::map<int, const char*> _ComponentState_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(7, _kComponentStateValues, _kComponentStateNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
+
+
+WorkflowModel::~WorkflowModel() throw() {
 }
 
 
-void Workflow::__set_templateId(const std::string& val) {
+void WorkflowModel::__set_templateId(const std::string& val) {
   this->templateId = val;
 }
 
-void Workflow::__set_name(const std::string& val) {
+void WorkflowModel::__set_name(const std::string& val) {
   this->name = val;
 }
 
-void Workflow::__set_graph(const std::string& val) {
+void WorkflowModel::__set_graph(const std::string& val) {
   this->graph = val;
-__isset.graph = true;
 }
 
-void Workflow::__set_image(const std::string& val) {
+void WorkflowModel::__set_gatewayId(const std::string& val) {
+  this->gatewayId = val;
+}
+
+void WorkflowModel::__set_createdUser(const std::string& val) {
+  this->createdUser = val;
+}
+
+void WorkflowModel::__set_image(const std::string& val) {
   this->image = val;
 __isset.image = true;
 }
 
-void Workflow::__set_workflowInputs(const std::vector< ::apache::airavata::model::application::io::InputDataObjectType> & val) {
+void WorkflowModel::__set_workflowInputs(const std::vector< ::apache::airavata::model::application::io::InputDataObjectType> & val) {
   this->workflowInputs = val;
 __isset.workflowInputs = true;
 }
 
-void Workflow::__set_workflowOutputs(const std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> & val) {
+void WorkflowModel::__set_workflowOutputs(const std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> & val) {
   this->workflowOutputs = val;
 __isset.workflowOutputs = true;
 }
 
-uint32_t Workflow::read(::apache::thrift::protocol::TProtocol* iprot) {
+void WorkflowModel::__set_creationTime(const int64_t val) {
+  this->creationTime = val;
+__isset.creationTime = true;
+}
+
+uint32_t WorkflowModel::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
   uint32_t xfer = 0;
@@ -77,6 +129,9 @@ uint32_t Workflow::read(::apache::thrift::protocol::TProtocol* iprot) {
 
   bool isset_templateId = false;
   bool isset_name = false;
+  bool isset_graph = false;
+  bool isset_gatewayId = false;
+  bool isset_createdUser = false;
 
   while (true)
   {
@@ -105,20 +160,36 @@ uint32_t Workflow::read(::apache::thrift::protocol::TProtocol* iprot) {
       case 3:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readString(this->graph);
-          this->__isset.graph = true;
+          isset_graph = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
       case 4:
         if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->gatewayId);
+          isset_gatewayId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->createdUser);
+          isset_createdUser = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 6:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
           xfer += iprot->readBinary(this->image);
           this->__isset.image = true;
         } else {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 5:
+      case 7:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->workflowInputs.clear();
@@ -138,7 +209,7 @@ uint32_t Workflow::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
-      case 6:
+      case 8:
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->workflowOutputs.clear();
@@ -158,6 +229,14 @@ uint32_t Workflow::read(::apache::thrift::protocol::TProtocol* iprot) {
           xfer += iprot->skip(ftype);
         }
         break;
+      case 9:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->creationTime);
+          this->__isset.creationTime = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
       default:
         xfer += iprot->skip(ftype);
         break;
@@ -171,13 +250,19 @@ uint32_t Workflow::read(::apache::thrift::protocol::TProtocol* iprot) {
     throw TProtocolException(TProtocolException::INVALID_DATA);
   if (!isset_name)
     throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_graph)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_gatewayId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  if (!isset_createdUser)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
   return xfer;
 }
 
-uint32_t Workflow::write(::apache::thrift::protocol::TProtocol* oprot) const {
+uint32_t WorkflowModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
   uint32_t xfer = 0;
   apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
-  xfer += oprot->writeStructBegin("Workflow");
+  xfer += oprot->writeStructBegin("WorkflowModel");
 
   xfer += oprot->writeFieldBegin("templateId", ::apache::thrift::protocol::T_STRING, 1);
   xfer += oprot->writeString(this->templateId);
@@ -187,18 +272,25 @@ uint32_t Workflow::write(::apache::thrift::protocol::TProtocol* oprot) const {
   xfer += oprot->writeString(this->name);
   xfer += oprot->writeFieldEnd();
 
-  if (this->__isset.graph) {
-    xfer += oprot->writeFieldBegin("graph", ::apache::thrift::protocol::T_STRING, 3);
-    xfer += oprot->writeString(this->graph);
-    xfer += oprot->writeFieldEnd();
-  }
+  xfer += oprot->writeFieldBegin("graph", ::apache::thrift::protocol::T_STRING, 3);
+  xfer += oprot->writeString(this->graph);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("gatewayId", ::apache::thrift::protocol::T_STRING, 4);
+  xfer += oprot->writeString(this->gatewayId);
+  xfer += oprot->writeFieldEnd();
+
+  xfer += oprot->writeFieldBegin("createdUser", ::apache::thrift::protocol::T_STRING, 5);
+  xfer += oprot->writeString(this->createdUser);
+  xfer += oprot->writeFieldEnd();
+
   if (this->__isset.image) {
-    xfer += oprot->writeFieldBegin("image", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeFieldBegin("image", ::apache::thrift::protocol::T_STRING, 6);
     xfer += oprot->writeBinary(this->image);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.workflowInputs) {
-    xfer += oprot->writeFieldBegin("workflowInputs", ::apache::thrift::protocol::T_LIST, 5);
+    xfer += oprot->writeFieldBegin("workflowInputs", ::apache::thrift::protocol::T_LIST, 7);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->workflowInputs.size()));
       std::vector< ::apache::airavata::model::application::io::InputDataObjectType> ::const_iterator _iter10;
@@ -211,7 +303,7 @@ uint32_t Workflow::write(::apache::thrift::protocol::TProtocol* oprot) const {
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.workflowOutputs) {
-    xfer += oprot->writeFieldBegin("workflowOutputs", ::apache::thrift::protocol::T_LIST, 6);
+    xfer += oprot->writeFieldBegin("workflowOutputs", ::apache::thrift::protocol::T_LIST, 8);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->workflowOutputs.size()));
       std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> ::const_iterator _iter11;
@@ -223,50 +315,868 @@ uint32_t Workflow::write(::apache::thrift::protocol::TProtocol* oprot) const {
     }
     xfer += oprot->writeFieldEnd();
   }
+  if (this->__isset.creationTime) {
+    xfer += oprot->writeFieldBegin("creationTime", ::apache::thrift::protocol::T_I64, 9);
+    xfer += oprot->writeI64(this->creationTime);
+    xfer += oprot->writeFieldEnd();
+  }
   xfer += oprot->writeFieldStop();
   xfer += oprot->writeStructEnd();
   return xfer;
 }
 
-void swap(Workflow &a, Workflow &b) {
+void swap(WorkflowModel &a, WorkflowModel &b) {
   using ::std::swap;
   swap(a.templateId, b.templateId);
   swap(a.name, b.name);
   swap(a.graph, b.graph);
+  swap(a.gatewayId, b.gatewayId);
+  swap(a.createdUser, b.createdUser);
   swap(a.image, b.image);
   swap(a.workflowInputs, b.workflowInputs);
   swap(a.workflowOutputs, b.workflowOutputs);
+  swap(a.creationTime, b.creationTime);
   swap(a.__isset, b.__isset);
 }
 
-Workflow::Workflow(const Workflow& other12) {
+WorkflowModel::WorkflowModel(const WorkflowModel& other12) {
   templateId = other12.templateId;
   name = other12.name;
   graph = other12.graph;
+  gatewayId = other12.gatewayId;
+  createdUser = other12.createdUser;
   image = other12.image;
   workflowInputs = other12.workflowInputs;
   workflowOutputs = other12.workflowOutputs;
+  creationTime = other12.creationTime;
   __isset = other12.__isset;
 }
-Workflow& Workflow::operator=(const Workflow& other13) {
+WorkflowModel& WorkflowModel::operator=(const WorkflowModel& other13) {
   templateId = other13.templateId;
   name = other13.name;
   graph = other13.graph;
+  gatewayId = other13.gatewayId;
+  createdUser = other13.createdUser;
   image = other13.image;
   workflowInputs = other13.workflowInputs;
   workflowOutputs = other13.workflowOutputs;
+  creationTime = other13.creationTime;
   __isset = other13.__isset;
   return *this;
 }
-void Workflow::printTo(std::ostream& out) const {
+void WorkflowModel::printTo(std::ostream& out) const {
   using ::apache::thrift::to_string;
-  out << "Workflow(";
+  out << "WorkflowModel(";
   out << "templateId=" << to_string(templateId);
   out << ", " << "name=" << to_string(name);
-  out << ", " << "graph="; (__isset.graph ? (out << to_string(graph)) : (out << "<null>"));
+  out << ", " << "graph=" << to_string(graph);
+  out << ", " << "gatewayId=" << to_string(gatewayId);
+  out << ", " << "createdUser=" << to_string(createdUser);
   out << ", " << "image="; (__isset.image ? (out << to_string(image)) : (out << "<null>"));
   out << ", " << "workflowInputs="; (__isset.workflowInputs ? (out << to_string(workflowInputs)) : (out << "<null>"));
   out << ", " << "workflowOutputs="; (__isset.workflowOutputs ? (out << to_string(workflowOutputs)) : (out << "<null>"));
+  out << ", " << "creationTime="; (__isset.creationTime ? (out << to_string(creationTime)) : (out << "<null>"));
+  out << ")";
+}
+
+
+ComponentStatus::~ComponentStatus() throw() {
+}
+
+
+void ComponentStatus::__set_state(const ComponentState::type val) {
+  this->state = val;
+}
+
+void ComponentStatus::__set_reason(const std::string& val) {
+  this->reason = val;
+__isset.reason = true;
+}
+
+void ComponentStatus::__set_timeofStateChange(const int64_t val) {
+  this->timeofStateChange = val;
+__isset.timeofStateChange = true;
+}
+
+uint32_t ComponentStatus::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_state = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast14;
+          xfer += iprot->readI32(ecast14);
+          this->state = (ComponentState::type)ecast14;
+          isset_state = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->reason);
+          this->__isset.reason = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->timeofStateChange);
+          this->__isset.timeofStateChange = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_state)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t ComponentStatus::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("ComponentStatus");
+
+  xfer += oprot->writeFieldBegin("state", ::apache::thrift::protocol::T_I32, 1);
+  xfer += oprot->writeI32((int32_t)this->state);
+  xfer += oprot->writeFieldEnd();
+
+  if (this->__isset.reason) {
+    xfer += oprot->writeFieldBegin("reason", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->reason);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.timeofStateChange) {
+    xfer += oprot->writeFieldBegin("timeofStateChange", ::apache::thrift::protocol::T_I64, 3);
+    xfer += oprot->writeI64(this->timeofStateChange);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(ComponentStatus &a, ComponentStatus &b) {
+  using ::std::swap;
+  swap(a.state, b.state);
+  swap(a.reason, b.reason);
+  swap(a.timeofStateChange, b.timeofStateChange);
+  swap(a.__isset, b.__isset);
+}
+
+ComponentStatus::ComponentStatus(const ComponentStatus& other15) {
+  state = other15.state;
+  reason = other15.reason;
+  timeofStateChange = other15.timeofStateChange;
+  __isset = other15.__isset;
+}
+ComponentStatus& ComponentStatus::operator=(const ComponentStatus& other16) {
+  state = other16.state;
+  reason = other16.reason;
+  timeofStateChange = other16.timeofStateChange;
+  __isset = other16.__isset;
+  return *this;
+}
+void ComponentStatus::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "ComponentStatus(";
+  out << "state=" << to_string(state);
+  out << ", " << "reason="; (__isset.reason ? (out << to_string(reason)) : (out << "<null>"));
+  out << ", " << "timeofStateChange="; (__isset.timeofStateChange ? (out << to_string(timeofStateChange)) : (out << "<null>"));
+  out << ")";
+}
+
+
+WorkflowStatus::~WorkflowStatus() throw() {
+}
+
+
+void WorkflowStatus::__set_state(const WorkflowState::type val) {
+  this->state = val;
+}
+
+void WorkflowStatus::__set_timeOfStateChange(const int64_t val) {
+  this->timeOfStateChange = val;
+__isset.timeOfStateChange = true;
+}
+
+void WorkflowStatus::__set_reason(const std::string& val) {
+  this->reason = val;
+__isset.reason = true;
+}
+
+uint32_t WorkflowStatus::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_state = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_I32) {
+          int32_t ecast17;
+          xfer += iprot->readI32(ecast17);
+          this->state = (WorkflowState::type)ecast17;
+          isset_state = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_I64) {
+          xfer += iprot->readI64(this->timeOfStateChange);
+          this->__isset.timeOfStateChange = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->reason);
+          this->__isset.reason = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_state)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t WorkflowStatus::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("WorkflowStatus");
+
+  xfer += oprot->writeFieldBegin("state", ::apache::thrift::protocol::T_I32, 1);
+  xfer += oprot->writeI32((int32_t)this->state);
+  xfer += oprot->writeFieldEnd();
+
+  if (this->__isset.timeOfStateChange) {
+    xfer += oprot->writeFieldBegin("timeOfStateChange", ::apache::thrift::protocol::T_I64, 2);
+    xfer += oprot->writeI64(this->timeOfStateChange);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.reason) {
+    xfer += oprot->writeFieldBegin("reason", ::apache::thrift::protocol::T_STRING, 3);
+    xfer += oprot->writeString(this->reason);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(WorkflowStatus &a, WorkflowStatus &b) {
+  using ::std::swap;
+  swap(a.state, b.state);
+  swap(a.timeOfStateChange, b.timeOfStateChange);
+  swap(a.reason, b.reason);
+  swap(a.__isset, b.__isset);
+}
+
+WorkflowStatus::WorkflowStatus(const WorkflowStatus& other18) {
+  state = other18.state;
+  timeOfStateChange = other18.timeOfStateChange;
+  reason = other18.reason;
+  __isset = other18.__isset;
+}
+WorkflowStatus& WorkflowStatus::operator=(const WorkflowStatus& other19) {
+  state = other19.state;
+  timeOfStateChange = other19.timeOfStateChange;
+  reason = other19.reason;
+  __isset = other19.__isset;
+  return *this;
+}
+void WorkflowStatus::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "WorkflowStatus(";
+  out << "state=" << to_string(state);
+  out << ", " << "timeOfStateChange="; (__isset.timeOfStateChange ? (out << to_string(timeOfStateChange)) : (out << "<null>"));
+  out << ", " << "reason="; (__isset.reason ? (out << to_string(reason)) : (out << "<null>"));
+  out << ")";
+}
+
+
+EdgeModel::~EdgeModel() throw() {
+}
+
+
+void EdgeModel::__set_edgeId(const std::string& val) {
+  this->edgeId = val;
+}
+
+void EdgeModel::__set_name(const std::string& val) {
+  this->name = val;
+__isset.name = true;
+}
+
+void EdgeModel::__set_status(const ComponentStatus& val) {
+  this->status = val;
+__isset.status = true;
+}
+
+void EdgeModel::__set_description(const std::string& val) {
+  this->description = val;
+__isset.description = true;
+}
+
+uint32_t EdgeModel::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_edgeId = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->edgeId);
+          isset_edgeId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->name);
+          this->__isset.name = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->status.read(iprot);
+          this->__isset.status = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->description);
+          this->__isset.description = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_edgeId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t EdgeModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("EdgeModel");
+
+  xfer += oprot->writeFieldBegin("edgeId", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->edgeId);
+  xfer += oprot->writeFieldEnd();
+
+  if (this->__isset.name) {
+    xfer += oprot->writeFieldBegin("name", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->name);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.status) {
+    xfer += oprot->writeFieldBegin("status", ::apache::thrift::protocol::T_STRUCT, 3);
+    xfer += this->status.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.description) {
+    xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeString(this->description);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(EdgeModel &a, EdgeModel &b) {
+  using ::std::swap;
+  swap(a.edgeId, b.edgeId);
+  swap(a.name, b.name);
+  swap(a.status, b.status);
+  swap(a.description, b.description);
+  swap(a.__isset, b.__isset);
+}
+
+EdgeModel::EdgeModel(const EdgeModel& other20) {
+  edgeId = other20.edgeId;
+  name = other20.name;
+  status = other20.status;
+  description = other20.description;
+  __isset = other20.__isset;
+}
+EdgeModel& EdgeModel::operator=(const EdgeModel& other21) {
+  edgeId = other21.edgeId;
+  name = other21.name;
+  status = other21.status;
+  description = other21.description;
+  __isset = other21.__isset;
+  return *this;
+}
+void EdgeModel::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "EdgeModel(";
+  out << "edgeId=" << to_string(edgeId);
+  out << ", " << "name="; (__isset.name ? (out << to_string(name)) : (out << "<null>"));
+  out << ", " << "status="; (__isset.status ? (out << to_string(status)) : (out << "<null>"));
+  out << ", " << "description="; (__isset.description ? (out << to_string(description)) : (out << "<null>"));
+  out << ")";
+}
+
+
+PortModel::~PortModel() throw() {
+}
+
+
+void PortModel::__set_portId(const std::string& val) {
+  this->portId = val;
+}
+
+void PortModel::__set_name(const std::string& val) {
+  this->name = val;
+__isset.name = true;
+}
+
+void PortModel::__set_status(const ComponentStatus& val) {
+  this->status = val;
+__isset.status = true;
+}
+
+void PortModel::__set_value(const std::string& val) {
+  this->value = val;
+__isset.value = true;
+}
+
+void PortModel::__set_description(const std::string& val) {
+  this->description = val;
+__isset.description = true;
+}
+
+uint32_t PortModel::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_portId = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->portId);
+          isset_portId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->name);
+          this->__isset.name = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->status.read(iprot);
+          this->__isset.status = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->value);
+          this->__isset.value = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->description);
+          this->__isset.description = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_portId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t PortModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("PortModel");
+
+  xfer += oprot->writeFieldBegin("portId", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->portId);
+  xfer += oprot->writeFieldEnd();
+
+  if (this->__isset.name) {
+    xfer += oprot->writeFieldBegin("name", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->name);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.status) {
+    xfer += oprot->writeFieldBegin("status", ::apache::thrift::protocol::T_STRUCT, 3);
+    xfer += this->status.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.value) {
+    xfer += oprot->writeFieldBegin("value", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeString(this->value);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.description) {
+    xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 5);
+    xfer += oprot->writeString(this->description);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(PortModel &a, PortModel &b) {
+  using ::std::swap;
+  swap(a.portId, b.portId);
+  swap(a.name, b.name);
+  swap(a.status, b.status);
+  swap(a.value, b.value);
+  swap(a.description, b.description);
+  swap(a.__isset, b.__isset);
+}
+
+PortModel::PortModel(const PortModel& other22) {
+  portId = other22.portId;
+  name = other22.name;
+  status = other22.status;
+  value = other22.value;
+  description = other22.description;
+  __isset = other22.__isset;
+}
+PortModel& PortModel::operator=(const PortModel& other23) {
+  portId = other23.portId;
+  name = other23.name;
+  status = other23.status;
+  value = other23.value;
+  description = other23.description;
+  __isset = other23.__isset;
+  return *this;
+}
+void PortModel::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "PortModel(";
+  out << "portId=" << to_string(portId);
+  out << ", " << "name="; (__isset.name ? (out << to_string(name)) : (out << "<null>"));
+  out << ", " << "status="; (__isset.status ? (out << to_string(status)) : (out << "<null>"));
+  out << ", " << "value="; (__isset.value ? (out << to_string(value)) : (out << "<null>"));
+  out << ", " << "description="; (__isset.description ? (out << to_string(description)) : (out << "<null>"));
+  out << ")";
+}
+
+
+NodeModel::~NodeModel() throw() {
+}
+
+
+void NodeModel::__set_nodeId(const std::string& val) {
+  this->nodeId = val;
+}
+
+void NodeModel::__set_name(const std::string& val) {
+  this->name = val;
+__isset.name = true;
+}
+
+void NodeModel::__set_applicationId(const std::string& val) {
+  this->applicationId = val;
+__isset.applicationId = true;
+}
+
+void NodeModel::__set_applicationName(const std::string& val) {
+  this->applicationName = val;
+__isset.applicationName = true;
+}
+
+void NodeModel::__set_status(const ComponentStatus& val) {
+  this->status = val;
+__isset.status = true;
+}
+
+void NodeModel::__set_description(const std::string& val) {
+  this->description = val;
+__isset.description = true;
+}
+
+uint32_t NodeModel::read(::apache::thrift::protocol::TProtocol* iprot) {
+
+  apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
+  uint32_t xfer = 0;
+  std::string fname;
+  ::apache::thrift::protocol::TType ftype;
+  int16_t fid;
+
+  xfer += iprot->readStructBegin(fname);
+
+  using ::apache::thrift::protocol::TProtocolException;
+
+  bool isset_nodeId = false;
+
+  while (true)
+  {
+    xfer += iprot->readFieldBegin(fname, ftype, fid);
+    if (ftype == ::apache::thrift::protocol::T_STOP) {
+      break;
+    }
+    switch (fid)
+    {
+      case 1:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->nodeId);
+          isset_nodeId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 2:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->name);
+          this->__isset.name = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 3:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->applicationId);
+          this->__isset.applicationId = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 4:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->applicationName);
+          this->__isset.applicationName = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 5:
+        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
+          xfer += this->status.read(iprot);
+          this->__isset.status = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      case 6:
+        if (ftype == ::apache::thrift::protocol::T_STRING) {
+          xfer += iprot->readString(this->description);
+          this->__isset.description = true;
+        } else {
+          xfer += iprot->skip(ftype);
+        }
+        break;
+      default:
+        xfer += iprot->skip(ftype);
+        break;
+    }
+    xfer += iprot->readFieldEnd();
+  }
+
+  xfer += iprot->readStructEnd();
+
+  if (!isset_nodeId)
+    throw TProtocolException(TProtocolException::INVALID_DATA);
+  return xfer;
+}
+
+uint32_t NodeModel::write(::apache::thrift::protocol::TProtocol* oprot) const {
+  uint32_t xfer = 0;
+  apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
+  xfer += oprot->writeStructBegin("NodeModel");
+
+  xfer += oprot->writeFieldBegin("nodeId", ::apache::thrift::protocol::T_STRING, 1);
+  xfer += oprot->writeString(this->nodeId);
+  xfer += oprot->writeFieldEnd();
+
+  if (this->__isset.name) {
+    xfer += oprot->writeFieldBegin("name", ::apache::thrift::protocol::T_STRING, 2);
+    xfer += oprot->writeString(this->name);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.applicationId) {
+    xfer += oprot->writeFieldBegin("applicationId", ::apache::thrift::protocol::T_STRING, 3);
+    xfer += oprot->writeString(this->applicationId);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.applicationName) {
+    xfer += oprot->writeFieldBegin("applicationName", ::apache::thrift::protocol::T_STRING, 4);
+    xfer += oprot->writeString(this->applicationName);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.status) {
+    xfer += oprot->writeFieldBegin("status", ::apache::thrift::protocol::T_STRUCT, 5);
+    xfer += this->status.write(oprot);
+    xfer += oprot->writeFieldEnd();
+  }
+  if (this->__isset.description) {
+    xfer += oprot->writeFieldBegin("description", ::apache::thrift::protocol::T_STRING, 6);
+    xfer += oprot->writeString(this->description);
+    xfer += oprot->writeFieldEnd();
+  }
+  xfer += oprot->writeFieldStop();
+  xfer += oprot->writeStructEnd();
+  return xfer;
+}
+
+void swap(NodeModel &a, NodeModel &b) {
+  using ::std::swap;
+  swap(a.nodeId, b.nodeId);
+  swap(a.name, b.name);
+  swap(a.applicationId, b.applicationId);
+  swap(a.applicationName, b.applicationName);
+  swap(a.status, b.status);
+  swap(a.description, b.description);
+  swap(a.__isset, b.__isset);
+}
+
+NodeModel::NodeModel(const NodeModel& other24) {
+  nodeId = other24.nodeId;
+  name = other24.name;
+  applicationId = other24.applicationId;
+  applicationName = other24.applicationName;
+  status = other24.status;
+  description = other24.description;
+  __isset = other24.__isset;
+}
+NodeModel& NodeModel::operator=(const NodeModel& other25) {
+  nodeId = other25.nodeId;
+  name = other25.name;
+  applicationId = other25.applicationId;
+  applicationName = other25.applicationName;
+  status = other25.status;
+  description = other25.description;
+  __isset = other25.__isset;
+  return *this;
+}
+void NodeModel::printTo(std::ostream& out) const {
+  using ::apache::thrift::to_string;
+  out << "NodeModel(";
+  out << "nodeId=" << to_string(nodeId);
+  out << ", " << "name="; (__isset.name ? (out << to_string(name)) : (out << "<null>"));
+  out << ", " << "applicationId="; (__isset.applicationId ? (out << to_string(applicationId)) : (out << "<null>"));
+  out << ", " << "applicationName="; (__isset.applicationName ? (out << to_string(applicationName)) : (out << "<null>"));
+  out << ", " << "status="; (__isset.status ? (out << to_string(status)) : (out << "<null>"));
+  out << ", " << "description="; (__isset.description ? (out << to_string(description)) : (out << "<null>"));
   out << ")";
 }