{"action":"created","comment":{"url":"https://api.github.com/repos/ow2-proactive/documentation/pulls/comments/186055517","pull_request_review_id":117571393,"id":186055517,"diff_hunk":"@@ -451,12 +451,347 @@ The following changes must be performed:\n    ...\n ----\n \n+=== Deploy ProActive Nodes dynamically via other schedulers (PBS, SLURM, ...)\n+\n+This functionality is also called `Meta-Scheduling`.\n+\n+If an existing cluster is available in your organization and this cluster is managed by a native scheduler such as *SLURM*, *LSF* or *PBS*, you may want to execute transparently on this cluster ProActive <<__glossary_workflow,*Workflows*>> and <<_glossary_task,*Tasks*>>.\n+\n+As ProActive Tasks can be executed only on <<_glossary_proactive_node,*ProActive Nodes*>>, it is necessary to deploy ProActive Nodes on the cluster.\n+\n+Dynamic deployment of ProActive Nodes on a cluster to execute ProActive Tasks is handled by defining a _Native Scheduler <<_glossary_node_source,Node Source>>_ containing three components:\n+\n+ * The `Native Scheduler Infrastructure`: a <<_glossary_node_source_infrastructure,*Node Source Infrastructure*>> which allows to interact with a native scheduler to deploy ProActive Nodes.\n+\n+ * The `Native Scheduler Policy`:  a <<_glossary_node_source_policy,*Node Source Policy*>> which interacts with the Native Scheduler Infrastructure to request ProActive Nodes deployment dynamically based on the <<_glossary_proactive_scheduler,*ProActive Scheduler*>> pending queue.\n+\n+ * The `Native Scheduler Scheduling Policy`: a <<_glossary_scheduling_policy,*Scheduling Policy*>> which allows the execution of ProActive Tasks on ProActive Nodes provisioned by the Native Scheduler Policy.\n+\n+The provisioning of ProActive Nodes is controlled by a specific <<../user/ProActiveUserGuide.adoc#_generic_information,*Generic Information*>> `\"NS\"` which can be defined at Task or Job level.\n+\n+When this generic information is configured for a _Task_, a ProActive Node will be dynamically deployed on the cluster to execute the Task. This ProActive Node will be associated with the Task and will only accept this Task execution. When the Task terminates, the ProActive Node will also be terminated.\n+\n+When this generic information is configured for a _Job_, all Tasks contained in the Job will execute on the cluster. Nodes will be created dynamically to execute Tasks of this Job, with a similar Task/Node association.\n+\n+The behavior of the Meta-Scheduling feature is summarized on the following diagram (example for PBS integration):\n+\n+image::NativeScheduler.png[PBS Integration, , title=\"PBS Integration\"]\n+\n+The following paragraphs explain how to configure the Native Scheduler Infrastructure, Native Scheduler Policy, Native Scheduler Scheduling Policy and execute ProActive tasks using a Native Scheduler Node Source.\n+\n+==== Native Scheduler Node Source Configuration\n+\n+Using the <<_glossary_rm_web_interface,*Resource Manager Web Interface*>>, you can create a <<_glossary_node_source,*Node Source*>> used to aquire <<_glossary_proactive_node,*ProActive Nodes*>> from a Native Scheduler.\n+\n+From The drop down menu, the *NativeSchedulerInfrastructure* and *NativeSchedulerPolicy* must be selected.\n+\n+Here is an explanation of the node source parameters:\n+\n+ * `Name` : you should name the node source accordingly to your infrastructure, it can be the cluster name, head node name, or native scheduler name (PBS, SLURM), etc.\n+\n+===== NativeSchedulerInfrastructure\n+\n+ * `RMCredentialsPath` : point to a file which contains the credentials of an administrator user which will own the node source. The ProActive Scheduler Server release contains two admin users credentials files : `config/authentication/rm.cred` and `config/authentication/admin_user.cred`\n+ * `NSFrontalHostAddress` : the host name or IP address of the cluster head node.\n+ * `NSSchedulerHome` : the location of the shared ProActive installation on cluster nodes (cluster nodes must be able to access ProActive libraries in order to start ProActive Node). Example `/opt/proactive/activeeon_enterprise-node-linux-x64-8.1.0`.\n+ * `javaHome` : similarly, cluster nodes must be able to access the java command in order to start ProActive Nodes. ProActive installation includes a Java Runtime Environment under the `jre` subfolder. Example: `/opt/proactive/activeeon_enterprise-node-linux-x64-8.1.0/jre`.\n+ * `jvmParameters` : additional options which can be passed to the java command.\n+ * `sshOptions` : additional options which can be passed to the ssh command used to connect to NSFrontalHostAddress.\n+ * `NSNodeTimeoutInSeconds` : timeout to wait for the deployment of ProActive Nodes on the cluster. As it the time needed to deploy ProActive Nodes depends on the cluster load, this timeout should be a large value.\n+ * `ìmpersonationMethod`: when a job is submitted to the native scheduler, the submission is performed under the current ProActive Scheduler user. An impersonation is thus performed between the scheduler process user and the target user.\n+ This impersonation can be performed using 3 different strategies:\n+ ** `ssh`: in that case the head node is contacted using a ssh command with the current ProActive Scheduler user and password. User/password combination between the ProActive Scheduler and the head node operating system must match.\n+ ** `none`: in that case the head node is contacted using a ssh command with the ProActive Scheduler process user (passwordless ssh). Submission to the native scheduler will be performed with the same account.\n+ ** `sudo`: similar to `none` regarding the connection to the head node, but a `sudo` command will be initiated to impersonate as the current Scheduler User, before doing a job submission.\n+ * `alternateRMUrl` : the url used by the ProActive Nodes to contact <<_glossary_resource_manager,*ProActive Resource Manager*>>. This url is displayed on ProActive server startup. Example: `pnp://myserver:64738`.\n+ * `sshPort` : port used for ssh connections.\n+ * `nsPreCommand` : a linux command which can be run before launching ProActive Nodes on the cluster. Can be used as a workaround when some system environment variables are not properly set when starting ProActive Nodes.\n+ * `nsSubmitCommand` : this is the main command used to start ProActive Nodes on the cluster. The command can used patterns which will be replaced dynamically by the ProActive Resource Manager. +\n+[cols=2*]\n+|===\n+\n+|`%NS_JOBNAME%` |contains a configurable job name dynamically created by the resource manager.\n+\n+|`%LOG_FILE%` |contains a log file path dynamically created by the resource manager and located in side the NSSchedulerHome installation. This log file is useful to debug errors during native scheduler job submission.\n+\n+|`%PA_USERNAME%` |contains the current ProActive Scheduler user.\n+|===\n+\n+Depending on the actual native scheduler implementation, `nsSubmitCommand` will vary, here are examples definitions: +\n+\n+[cols=2*]\n+|===\n+\n+|PBS |`qsub -N %NS_JOBNAME% -o %LOG_FILE% -j oe`\n+\n+|SLURM |`sbatch -J %NS_JOBNAME% -o %LOG_FILE%`\n+\n+|LSF |`bsub -J %NS_JOBNAME% -o %LOG_FILE% -e %LOG_FILE%`\n+\n+|===\n+\n+ * `nsKillCommand` : this is the command used to kill ProActive Nodes started previously by the nsSubmitCommand. It can use the following patterns:\n+\n+[cols=2*]\n+|===\n+\n+|`%NS_JOBNAME%` |contains a configurable job name dynamically created by the resource manager.\n+\n+|`%NS_JOBID%` |contains the job id returned by the native scheduler when submitting the job. Currently, job id can only be used with PBS, when the setting `submitReturnsJobId` is set to `true`.\n+\n+|===\n+\n+Similarly to nsSubmitCommand, `nsKillCommand` will vary for each native scheduler syntax: +\n+\n+[cols=2*]\n+|===\n+\n+|PBS |`qdel %NS_JOBID%`\n+\n+|SLURM |`scancel -n %NS_JOBNAME%`\n+\n+|LSF |`bkill -J %NS_JOBNAME%`\n+\n+|===\n+\n+ * `submitReturnsJobId`: is the job id returned plainly when calling the nsSubmitCommand? This is the behavior of PBS, and this is why this setting should be set to `true` when using PBS.\n+ * `nsJobName`: a way to configure the `%NS_JOBNAME%` pattern. The following patterns can be used:\n+\n+[cols=2*]\n+|===\n+\n+|`%PA_TASKID%` |contains the ProActive Task and Job ID associated with the node request.\n+\n+|`%PA_USERNAME%` |contains the current ProActive Scheduler user.\n+\n+|===\n+\n+ * `maxDeploymentFailure`: NativeSchedulerInfrastructure can make several attempts when starting a ProActive Node on the cluster.\n+\n+===== NativeSchedulerPolicy\n+\n+ * `userAccessType` : which users are allowed to use ProActive Nodes created by the NativeSchedulerInfrastructure. Refer to the <<_policies,Policies documentation>>.\n+ * `providerAccessType` : defines who can add nodes to this node source. Refer to the <<_policies,Policies documentation>>.\n+ * `schedulerUrl` : the url used by the ProActive Nodes to contact <<_glossary_scheduler,*ProActive Scheduler*>>. This url is displayed on ProActive server startup. Example: `pnp://myserver:64738`.\n+ * `schedulerCredentialsPath` : point to a file which contains the credentials of an administrator user which will connect to the scheduler. The ProActive Scheduler Server release contains two admin users credentials files : `config/authentication/rm.cred` and `config/authentication/admin_user.cred`\n+ * `rearrangeTasks` : currently not implemented.\n+ * `autoScaling` : if set to `true`, the NativeSchedulerPolicy will scan the Resource Manager activity and Scheduling queue. If the scheduling queue is not empty and all resource manager nodes are busy, `autoscaling` will automatically start ProActive Nodes from the NativeSchedulerInfrastructure. This setting cannot be used when multiple NativeScheduler node sources are deployed.\n+ * `refreshTime` : the NativeSchedulerPolicy will refresh its status and observe the ProActive Scheduler queue every `refreshTime` milliseconds.\n+\n+===== Creating the Node Source\n+\n+When the node source is created, it will be activated as other node sources (LocalInfrastructure, SSHInfrastructure, etc), but no ProActive Node will appear.\n+\n+This is expected as the Native Scheduler node source is *dynamic*, it will only create ProActive Nodes when specific conditions are met.\n+\n+==== Configure NativeSchedulerSchedulingPolicy\n+\n+After creating the Native Scheduler Node Source, it is necessary as well to change the <<_extending_proactive_scheduling_policy,*ProActive Scheduling Policy*>> to use the `NativeSchedulerSchedulingPolicy`.\n+\n+This policy ensures that tasks are executed on appropriate ProActive Nodes when using a Native Scheduler Node Source.\n+\n+In order to do that, edit the file `PROACTIVE_HOME/config/scheduler/settings.ini` and change the following line:\n+\n+----\n+pa.scheduler.policy=org.ow2.proactive.scheduler.policy.ExtendedSchedulerPolicy\n+----\n+\n+to:\n+\n+----\n+pa.scheduler.policy=org.ow2.proactive.scheduler.policy.NativeSchedulerSchedulingPolicy\n+----\n+\n+==== Match User Accounts With the Cluster\n+\n+Submission of jobs to the native scheduler is done by default using a SSH connection.\n+\n+When a ProActive Task belonging to a given user _Alice_ needs to execute on a NativeScheduler node source, a SSH connection will be performed with the login and password of the _Alice_ user registered in the ProActive Scheduler.\n+\n+Accordingly, this login/password combination must correspond to a real user on the cluster Head Node.\n+\n+Please refer to the <<_user_authentication,*User Authentication*>> section in order to manage ProActive Users.\n+\n+==== Execute Tasks on a Native Scheduler Node Source\n+\n+The <<../user/ProActiveUserGuide.adoc#_generic_information,*Generic Information*>> `NS` allows a ProActive Task to be executed on a Native Scheduler node source.\n+\n+It must contain the name of the target node source. Example:\n+\n+```xml\n+<task name=\"PBS_Task\">\n+    <description>\n+        <![CDATA[ Execute this Task in the PBS node source. ]]>\n+    </description>\n+    <genericInformation>\n+        <info name=\"NS\" value=\"PBS\"/>\n+    </genericInformation>\n+    <scriptExecutable>\n+        <script>\n+          <code language=\"groovy\">\n+            <![CDATA[\n+println \"Hello World\"\n+]]>\n+          </code>\n+        </script>\n+    </scriptExecutable>\n+</task>\n+```\n+\n+The NS value can also be defined at the job level, in that case, every tasks of this job will be executed on the Native Scheduler node source:\n+\n+```xml\n+<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n+<job\n+  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n+  xmlns=\"urn:proactive:jobdescriptor:3.10\"\n+     xsi:schemaLocation=\"urn:proactive:jobdescriptor:3.10 http://www.activeeon.com/public_content/schemas/proactive/jobdescriptor/3.10/schedulerjob.xsd\"\n+    name=\"PBS_Job\"\n+    priority=\"normal\"\n+    onTaskError=\"continueJobExecution\"\n+     maxNumberOfExecution=\"2\"\n+>\n+  <genericInformation>\n+    <info name=\"NS\" value=\"PBS\"/>\n+  </genericInformation>\n+  <taskFlow>\n+    <task name=\"Groovy_Task\">\n+      <description>\n+        <![CDATA[ The simplest task, ran by a groovy engine. ]]>\n+      </description>\n+      <scriptExecutable>\n+        <script>\n+          <code language=\"groovy\">\n+            <![CDATA[\n+println \"Hello World\"\n+]]>\n+          </code>\n+        </script>\n+      </scriptExecutable>\n+    </task>\n+  </taskFlow>\n+</job>\n+```\n+\n+It is also possible to define in a ProActive Task or Job the `#BATCH` generic information. This parameter allows to provide custom arguments to `nsSubmitCommand`.\n+\n+For example:\n+\n+```xml\n+<task name=\"PBS_Task\">\n+  <description>\n+    <![CDATA[ Runs on the PBS node source on queue1, using 2 nodes * 2 cpus ]]>\n+  </description>\n+  <genericInformation>\n+    <info name=\"NS\" value=\"PBS\"/>\n+    <info name=\"#BATCH\" value=\"-q queue1 -lnodes=2:ppn=2\"/>\n+  </genericInformation>\n+  <scriptExecutable>\n+    <script>\n+      <code language=\"groovy\">\n+         <![CDATA[\n+println \"Hello World\"\n+]]>\n+      </code>\n+    </script>\n+  </scriptExecutable>\n+</task>\n+```\n+\n+==== Native Scheduler Node Life Cycle\n+\n+As soon as tasks containing the `NS` generic information are pending, the target Native Scheduler node source will try to deploy ProActive Nodes to execute them.\n+\n+The node will first appear in `Deploying` <<_node_states,*state*>>. If some error occurs prior to the `nsSubmitCommand` execution (SSH connection, command syntax), the node state will change to `Lost`, with some explanation about the failure displayed.\n+\n+If the node remains in `Deploying` state, it is possible to monitor the job execution on the native scheduler itself (by logging into the head node):\n+\n+----\n+root@osboxes:/tmp/activeeon_enterprise-node-linux-x64-8.1.0-SNAPSHOT/logs# qstat\n+\n+Job ID                    Name             User            Time Use S Queue\n+------------------------- ---------------- --------------- -------- - -----\n+241.osboxes                STDIN            osboxes                0 R batch          \n+\n+root@osboxes:/tmp/activeeon_enterprise-node-linux-x64-8.1.0-SNAPSHOT/logs# qstat -f 241\n+\n+Job Id: 241.osboxes\n+    Job_Name = STDIN\n+    Job_Owner = osboxes@osboxes\n+    job_state = R\n+    queue = batch\n+    server = osboxes\n+    Checkpoint = u\n+    ctime = Fri May  4 10:13:06 2018\n+    Error_Path = osboxes:/tmp/activeeon_enterprise-node-linux-x64-8.1.0-SNAPSH\n+\tOT/logs/Node-osboxes_852t0.out\n+    exec_host = osboxes/0\n+    Hold_Types = n\n+    Join_Path = oe\n+    Keep_Files = n\n+    Mail_Points = a\n+    mtime = Fri May  4 10:13:06 2018\n+    Output_Path = osboxes:/tmp/activeeon_enterprise-node-linux-x64-8.1.0-SNAPS\n+\tHOT/logs/Node-osboxes_852t0.out\n+    Priority = 0\n+    qtime = Fri May  4 10:13:06 2018\n+    Rerunable = True\n+    Resource_List.walltime = 01:00:00\n+    Resource_List.nodes = 1\n+    Resource_List.nodect = 1\n+    Resource_List.neednodes = 1\n+    session_id = 6486\n+    substate = 42\n+    Variable_List = PBS_O_QUEUE=batch,PBS_O_HOME=/home/osboxes,\n+\tPBS_O_LOGNAME=osboxes,\n+\tPBS_O_PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/b\n+\tin:/usr/games:/usr/local/games,PBS_O_MAIL=/var/mail/osboxes,\n+\tPBS_O_SHELL=/bin/bash,PBS_O_LANG=fr_FR.UTF-8,\n+\tPBS_O_WORKDIR=/home/osboxes,PBS_O_HOST=osboxes,PBS_O_SERVER=osboxes\n+    euser = osboxes\n+    egroup = osboxes\n+    hashname = 241.osboxes\n+    queue_rank = 237\n+    queue_type = E\n+    comment = Job started on Fri May 04 at 10:13\n+    etime = Fri May  4 10:13:06 2018\n+    submit_args = -o /tmp/activeeon_enterprise-node-linux-x64-8.1.0-SNAPSHOT/l\n+\togs/Node-osboxes_852t0.out -e /tmp/activeeon_enterprise-node-linux-x64\n+\t-8.1.0-SNAPSHOT/logs/Node-osboxes_852t0.out -j oe\n+    start_time = Fri May  4 10:13:06 2018\n+    Walltime.Remaining = 3587\n+    start_count = 1\n+    fault_tolerant = False\n+    job_radix = 0\n+    submit_host = osboxes\n+    init_work_dir = /home/osboxes\n+    request_version = 1\n+----\n+\n+If the native scheduler job is in _running_ state, but the ProActive Node associated remains in `Deploying` state, it probably means there is a connection issue between the ProActive Node and the Resource Manager.\n+If the default ProActive Network Protocol is used (`PNP`), it is necessary to have a two way connection between the cluster and ProActive server. You can refer to the <<_available_network_protocols,*network protocols*>> documentation for more info.\n+\n+To troubleshoot node deployment, you can:\n+\n+ * inspect the output of the native scheduler job if provided in the `nsSubmitCommand`\n+ * add the following log4j loggers to the ProActive Server `config/log/server.properties` +\n+```properties\n+log4j.logger.org.ow2.proactive.scheduler.policy=DEBUG\n+log4j.logger.org.ow2.proactive.scheduler.util=DEBUG\n+log4j.logger.org.ow2.proactive.nativescheduler=DEBUG\n+```\n+ * inspect the Scheduler server logs.\n+ \n+When the deployement is successful, the ProActive Node state will change to `Free` and shortly after to `Busy` as soon as the associated task will be deployed on the node.","path":"src/docs/admin/ProActiveAdminGuide.adoc","position":335,"original_position":335,"commit_id":"1efc0b2fcb2d0aca4dabe80899cea35be3027a1a","original_commit_id":"1efc0b2fcb2d0aca4dabe80899cea35be3027a1a","user":{"login":"jrochas","id":10711209,"avatar_url":"https://avatars3.githubusercontent.com/u/10711209?v=4","gravatar_id":"","url":"https://api.github.com/users/jrochas","html_url":"https://github.com/jrochas","followers_url":"https://api.github.com/users/jrochas/followers","following_url":"https://api.github.com/users/jrochas/following{/other_user}","gists_url":"https://api.github.com/users/jrochas/gists{/gist_id}","starred_url":"https://api.github.com/users/jrochas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jrochas/subscriptions","organizations_url":"https://api.github.com/users/jrochas/orgs","repos_url":"https://api.github.com/users/jrochas/repos","events_url":"https://api.github.com/users/jrochas/events{/privacy}","received_events_url":"https://api.github.com/users/jrochas/received_events","type":"User","site_admin":false},"body":"Typo in `deployement`.","created_at":"2018-05-04T11:29:41Z","updated_at":"2018-05-04T11:29:41Z","html_url":"https://github.com/ow2-proactive/documentation/pull/406#discussion_r186055517","pull_request_url":"https://api.github.com/repos/ow2-proactive/documentation/pulls/406","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/ow2-proactive/documentation/pulls/comments/186055517"},"html":{"href":"https://github.com/ow2-proactive/documentation/pull/406#discussion_r186055517"},"pull_request":{"href":"https://api.github.com/repos/ow2-proactive/documentation/pulls/406"}}},"pull_request":{"url":"https://api.github.com/repos/ow2-proactive/documentation/pulls/406","id":185939937,"html_url":"https://github.com/ow2-proactive/documentation/pull/406","diff_url":"https://github.com/ow2-proactive/documentation/pull/406.diff","patch_url":"https://github.com/ow2-proactive/documentation/pull/406.patch","issue_url":"https://api.github.com/repos/ow2-proactive/documentation/issues/406","number":406,"state":"open","locked":false,"title":"Native Scheduler documentation","user":{"login":"fviale","id":3063713,"avatar_url":"https://avatars0.githubusercontent.com/u/3063713?v=4","gravatar_id":"","url":"https://api.github.com/users/fviale","html_url":"https://github.com/fviale","followers_url":"https://api.github.com/users/fviale/followers","following_url":"https://api.github.com/users/fviale/following{/other_user}","gists_url":"https://api.github.com/users/fviale/gists{/gist_id}","starred_url":"https://api.github.com/users/fviale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fviale/subscriptions","organizations_url":"https://api.github.com/users/fviale/orgs","repos_url":"https://api.github.com/users/fviale/repos","events_url":"https://api.github.com/users/fviale/events{/privacy}","received_events_url":"https://api.github.com/users/fviale/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-05-04T10:02:52Z","updated_at":"2018-05-04T11:29:41Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f53f5ac47c4b80cd39125e2fdfe4d5a6a5c8cca1","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/ow2-proactive/documentation/pulls/406/commits","review_comments_url":"https://api.github.com/repos/ow2-proactive/documentation/pulls/406/comments","review_comment_url":"https://api.github.com/repos/ow2-proactive/documentation/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ow2-proactive/documentation/issues/406/comments","statuses_url":"https://api.github.com/repos/ow2-proactive/documentation/statuses/1efc0b2fcb2d0aca4dabe80899cea35be3027a1a","head":{"label":"fviale:master","ref":"master","sha":"1efc0b2fcb2d0aca4dabe80899cea35be3027a1a","user":{"login":"fviale","id":3063713,"avatar_url":"https://avatars0.githubusercontent.com/u/3063713?v=4","gravatar_id":"","url":"https://api.github.com/users/fviale","html_url":"https://github.com/fviale","followers_url":"https://api.github.com/users/fviale/followers","following_url":"https://api.github.com/users/fviale/following{/other_user}","gists_url":"https://api.github.com/users/fviale/gists{/gist_id}","starred_url":"https://api.github.com/users/fviale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fviale/subscriptions","organizations_url":"https://api.github.com/users/fviale/orgs","repos_url":"https://api.github.com/users/fviale/repos","events_url":"https://api.github.com/users/fviale/events{/privacy}","received_events_url":"https://api.github.com/users/fviale/received_events","type":"User","site_admin":false},"repo":{"id":59760765,"name":"documentation","full_name":"fviale/documentation","owner":{"login":"fviale","id":3063713,"avatar_url":"https://avatars0.githubusercontent.com/u/3063713?v=4","gravatar_id":"","url":"https://api.github.com/users/fviale","html_url":"https://github.com/fviale","followers_url":"https://api.github.com/users/fviale/followers","following_url":"https://api.github.com/users/fviale/following{/other_user}","gists_url":"https://api.github.com/users/fviale/gists{/gist_id}","starred_url":"https://api.github.com/users/fviale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fviale/subscriptions","organizations_url":"https://api.github.com/users/fviale/orgs","repos_url":"https://api.github.com/users/fviale/repos","events_url":"https://api.github.com/users/fviale/events{/privacy}","received_events_url":"https://api.github.com/users/fviale/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/fviale/documentation","description":"Documentation for ProActive Workflows & Scheduling","fork":true,"url":"https://api.github.com/repos/fviale/documentation","forks_url":"https://api.github.com/repos/fviale/documentation/forks","keys_url":"https://api.github.com/repos/fviale/documentation/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fviale/documentation/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fviale/documentation/teams","hooks_url":"https://api.github.com/repos/fviale/documentation/hooks","issue_events_url":"https://api.github.com/repos/fviale/documentation/issues/events{/number}","events_url":"https://api.github.com/repos/fviale/documentation/events","assignees_url":"https://api.github.com/repos/fviale/documentation/assignees{/user}","branches_url":"https://api.github.com/repos/fviale/documentation/branches{/branch}","tags_url":"https://api.github.com/repos/fviale/documentation/tags","blobs_url":"https://api.github.com/repos/fviale/documentation/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fviale/documentation/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fviale/documentation/git/refs{/sha}","trees_url":"https://api.github.com/repos/fviale/documentation/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fviale/documentation/statuses/{sha}","languages_url":"https://api.github.com/repos/fviale/documentation/languages","stargazers_url":"https://api.github.com/repos/fviale/documentation/stargazers","contributors_url":"https://api.github.com/repos/fviale/documentation/contributors","subscribers_url":"https://api.github.com/repos/fviale/documentation/subscribers","subscription_url":"https://api.github.com/repos/fviale/documentation/subscription","commits_url":"https://api.github.com/repos/fviale/documentation/commits{/sha}","git_commits_url":"https://api.github.com/repos/fviale/documentation/git/commits{/sha}","comments_url":"https://api.github.com/repos/fviale/documentation/comments{/number}","issue_comment_url":"https://api.github.com/repos/fviale/documentation/issues/comments{/number}","contents_url":"https://api.github.com/repos/fviale/documentation/contents/{+path}","compare_url":"https://api.github.com/repos/fviale/documentation/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fviale/documentation/merges","archive_url":"https://api.github.com/repos/fviale/documentation/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fviale/documentation/downloads","issues_url":"https://api.github.com/repos/fviale/documentation/issues{/number}","pulls_url":"https://api.github.com/repos/fviale/documentation/pulls{/number}","milestones_url":"https://api.github.com/repos/fviale/documentation/milestones{/number}","notifications_url":"https://api.github.com/repos/fviale/documentation/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fviale/documentation/labels{/name}","releases_url":"https://api.github.com/repos/fviale/documentation/releases{/id}","deployments_url":"https://api.github.com/repos/fviale/documentation/deployments","created_at":"2016-05-26T15:17:32Z","updated_at":"2018-05-04T10:02:31Z","pushed_at":"2018-05-04T10:02:30Z","git_url":"git://github.com/fviale/documentation.git","ssh_url":"git@github.com:fviale/documentation.git","clone_url":"https://github.com/fviale/documentation.git","svn_url":"https://github.com/fviale/documentation","homepage":"http://doc.activeeon.com/","size":50058,"stargazers_count":0,"watchers_count":0,"language":"CSS","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ow2-proactive:master","ref":"master","sha":"83fdc16b3c6144fbee433a067f5994930a13a1f4","user":{"login":"ow2-proactive","id":11553998,"avatar_url":"https://avatars1.githubusercontent.com/u/11553998?v=4","gravatar_id":"","url":"https://api.github.com/users/ow2-proactive","html_url":"https://github.com/ow2-proactive","followers_url":"https://api.github.com/users/ow2-proactive/followers","following_url":"https://api.github.com/users/ow2-proactive/following{/other_user}","gists_url":"https://api.github.com/users/ow2-proactive/gists{/gist_id}","starred_url":"https://api.github.com/users/ow2-proactive/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ow2-proactive/subscriptions","organizations_url":"https://api.github.com/users/ow2-proactive/orgs","repos_url":"https://api.github.com/users/ow2-proactive/repos","events_url":"https://api.github.com/users/ow2-proactive/events{/privacy}","received_events_url":"https://api.github.com/users/ow2-proactive/received_events","type":"Organization","site_admin":false},"repo":{"id":35725072,"name":"documentation","full_name":"ow2-proactive/documentation","owner":{"login":"ow2-proactive","id":11553998,"avatar_url":"https://avatars1.githubusercontent.com/u/11553998?v=4","gravatar_id":"","url":"https://api.github.com/users/ow2-proactive","html_url":"https://github.com/ow2-proactive","followers_url":"https://api.github.com/users/ow2-proactive/followers","following_url":"https://api.github.com/users/ow2-proactive/following{/other_user}","gists_url":"https://api.github.com/users/ow2-proactive/gists{/gist_id}","starred_url":"https://api.github.com/users/ow2-proactive/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ow2-proactive/subscriptions","organizations_url":"https://api.github.com/users/ow2-proactive/orgs","repos_url":"https://api.github.com/users/ow2-proactive/repos","events_url":"https://api.github.com/users/ow2-proactive/events{/privacy}","received_events_url":"https://api.github.com/users/ow2-proactive/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ow2-proactive/documentation","description":"Documentation for ProActive Workflows & Scheduling","fork":false,"url":"https://api.github.com/repos/ow2-proactive/documentation","forks_url":"https://api.github.com/repos/ow2-proactive/documentation/forks","keys_url":"https://api.github.com/repos/ow2-proactive/documentation/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ow2-proactive/documentation/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ow2-proactive/documentation/teams","hooks_url":"https://api.github.com/repos/ow2-proactive/documentation/hooks","issue_events_url":"https://api.github.com/repos/ow2-proactive/documentation/issues/events{/number}","events_url":"https://api.github.com/repos/ow2-proactive/documentation/events","assignees_url":"https://api.github.com/repos/ow2-proactive/documentation/assignees{/user}","branches_url":"https://api.github.com/repos/ow2-proactive/documentation/branches{/branch}","tags_url":"https://api.github.com/repos/ow2-proactive/documentation/tags","blobs_url":"https://api.github.com/repos/ow2-proactive/documentation/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ow2-proactive/documentation/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ow2-proactive/documentation/git/refs{/sha}","trees_url":"https://api.github.com/repos/ow2-proactive/documentation/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ow2-proactive/documentation/statuses/{sha}","languages_url":"https://api.github.com/repos/ow2-proactive/documentation/languages","stargazers_url":"https://api.github.com/repos/ow2-proactive/documentation/stargazers","contributors_url":"https://api.github.com/repos/ow2-proactive/documentation/contributors","subscribers_url":"https://api.github.com/repos/ow2-proactive/documentation/subscribers","subscription_url":"https://api.github.com/repos/ow2-proactive/documentation/subscription","commits_url":"https://api.github.com/repos/ow2-proactive/documentation/commits{/sha}","git_commits_url":"https://api.github.com/repos/ow2-proactive/documentation/git/commits{/sha}","comments_url":"https://api.github.com/repos/ow2-proactive/documentation/comments{/number}","issue_comment_url":"https://api.github.com/repos/ow2-proactive/documentation/issues/comments{/number}","contents_url":"https://api.github.com/repos/ow2-proactive/documentation/contents/{+path}","compare_url":"https://api.github.com/repos/ow2-proactive/documentation/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ow2-proactive/documentation/merges","archive_url":"https://api.github.com/repos/ow2-proactive/documentation/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ow2-proactive/documentation/downloads","issues_url":"https://api.github.com/repos/ow2-proactive/documentation/issues{/number}","pulls_url":"https://api.github.com/repos/ow2-proactive/documentation/pulls{/number}","milestones_url":"https://api.github.com/repos/ow2-proactive/documentation/milestones{/number}","notifications_url":"https://api.github.com/repos/ow2-proactive/documentation/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ow2-proactive/documentation/labels{/name}","releases_url":"https://api.github.com/repos/ow2-proactive/documentation/releases{/id}","deployments_url":"https://api.github.com/repos/ow2-proactive/documentation/deployments","created_at":"2015-05-16T13:38:52Z","updated_at":"2018-05-03T08:29:26Z","pushed_at":"2018-05-04T10:02:53Z","git_url":"git://github.com/ow2-proactive/documentation.git","ssh_url":"git@github.com:ow2-proactive/documentation.git","clone_url":"https://github.com/ow2-proactive/documentation.git","svn_url":"https://github.com/ow2-proactive/documentation","homepage":"http://doc.activeeon.com/","size":50035,"stargazers_count":1,"watchers_count":1,"language":"CSS","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":31,"mirror_url":null,"archived":false,"open_issues_count":14,"license":null,"forks":31,"open_issues":14,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ow2-proactive/documentation/pulls/406"},"html":{"href":"https://github.com/ow2-proactive/documentation/pull/406"},"issue":{"href":"https://api.github.com/repos/ow2-proactive/documentation/issues/406"},"comments":{"href":"https://api.github.com/repos/ow2-proactive/documentation/issues/406/comments"},"review_comments":{"href":"https://api.github.com/repos/ow2-proactive/documentation/pulls/406/comments"},"review_comment":{"href":"https://api.github.com/repos/ow2-proactive/documentation/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ow2-proactive/documentation/pulls/406/commits"},"statuses":{"href":"https://api.github.com/repos/ow2-proactive/documentation/statuses/1efc0b2fcb2d0aca4dabe80899cea35be3027a1a"}},"author_association":"OWNER"}}
{"actor":{"display_login":"jrochas"}}