{"action":"created","comment":{"url":"https://api.github.com/repos/quattor/configuration-modules-core/pulls/comments/29993033","id":29993033,"diff_hunk":"@@ -28,92 +25,148 @@ Target definition and contextual variable value may also contain expression inte\n \n A list of symbolic links to create or delete.  Each entry\n must be of the structure_symlink_entry type which has the following\n-fields: name, target, delete, exists, replace.\n+fields: \n \n-'name' is the symbolic link name, 'target' is the link target, other fields are boolean. 'delete' means delete the link rather than create. 'exists' means check the target exists when creating or check the link exists when deleting. \n+=over\n \n-'replace' is an option taking one or several of the several following suboptions : all, dir, dirempty, file, link, none. Each suboption can have the following values : 'yes', 'no', a string interpreted as a file extension used to rename the existing object with the link name. If a suboption value is empty, it is interpreted as 'yes'. If value is 'yes', replacement is enabled but existing object is not renamed, except if a default extension has been defined with 'none' or 'all' or if it is a non empty directory (renamed with a default extension).\n+=item *\n \n-When 'all' or 'none' suboption is specified, other suboptions can be specified too to redefine extension or to prevent replacement of a specific object type. 'dirempty' means directory is replaced only if empty. 'none=extension' can be used to establish a default backup extension without enabling replacement (as it is with 'all').\n+C<name>: symbolic link name (path).\n \n-=head2 /software/components/symlink/context\n+=item *\n \n-A list of contextual variables to use in target definitions.  Each entry\n-must be of the structure_symlink__context_entry type which has the following\n-fields: name, value.  Contextual variables are global.\n+C<target>: link target path. The target path can be built using a command output with the command to execute between a pair of C<@@> or a contextual variable using the syntax\n+C<{variable}> (variables are defined in C</software/components/symlinks/context>). Unless the shell command between C<@@> must be reevaluated for each link, it is better \n+to associate the shell command\n+with a contextual variable and use the variable in the target definition, as a contextual variable is evaluated once (global). \n \n+=item *\n \n-=head2 /software/components/symlink/options\n+C<delete>: (boolean) delete the symlink (not its target) rather than creating it. C<target> can be ommitted in this case and if present, it is not checked to be this value before\n+deletion. If C<exists> is true, raise an error, if the link is not found else just silently ignore it.\n \n-A list of global options used as default for all links creation/deletion. Supported options are the same as options supported in the link definition (see above), with the exception of 'delete'.\n+=item *\n \n-=head1 EXAMPLES\n- \n-    \"/software/components/symlink/links\" = \n-      list(nlist(\n-             \"name\",    \"/usr/bin/tcsh\",\n-             \"target\",   \"/bin/tcsh\",\n-             \"exists\",    true\n-            )\n-      );\n-\n-    \"/software/components/symlink/links\" = \n-      list(nlist(\n-             \"name\",    \"/atlas\",\n-             \"target\",   \"/atlas_prod/@@uname@@\",\n-             \"exist\",    true\n-            )\n-      );\n-\n-    \"/software/components/symlink/context\" = \n-      list(nlist(\n-             \"name\",    \"ostype\",\n-             \"value\",   \"@@uname@@\",\n-            )\n-      );\n-    \"/software/components/symlink/links\" = \n-      list(nlist(\n-             \"name\",    \"/atlas\",\n-             \"target\",   \"/atlas_prod/{ostype}\",\n-             \"exists\",    true\n-            )\n-      );\n+C<exists>: (boolean) check that the target exists when creating it or check that the symlink name exists when deleting it.\n \n-    # Allow replacement of empty directories and links\n-    \"/software/components/symlink/options/replace/dirempty\" = \".saved\"; \n-    \"/software/components/symlink/options/replace/link\" = \"yes\";\n+=item *\n+\n+C<replace>: (nlist) option used to specify the action to take when an object with the same name as the symlink already exists, depending on the object type. \n+Possible actions are: do not define the symlink, replace the\n+object by the symlink or define the symlink after renaming the object. The nlist keys and values can be:\n+\n+=over\n+\n+=item *\n+\n+key: the existing object type. Valid values are: C<all>, C<dir>, C<dirempty>, C<file>, C<link>, C<none>.  C<dirempty> means an empty directory only, C<dir> means any directory.\n+C<all> and C<none> are mutually exclusive but can be combined with other object types to define the extension to use when renaming a given object type or to prevent/enable replacement for a specific object type. \n+\n+=item *\n \n-    \"/software/components/symlink/links\" = \n-      list(nlist(\n-             \"name\",    \"/usr/local\",\n-             \"target\",   \"/lal_prod/{ostype}\",\n-             \"exists\",    true\n-            )\n-      );\n+value: action applying to the object type. Can be C<yes> (replacement of the object by the symlink allowed), C<no> (replacement of the object by the symlink disabled) or any other\n+string. In this latter case, replacement of the object by the symlink is enabled after renaming the object by appending the string to its name. The value can also be empty: see\n+below. Note that non empty directories are B<always> renamed before defining the symlink (a default extension, C<.ncm-symlink_saved>, is used).\n \n-=head1 DEPENDENCIES\n+=back\n \n-None.\n+=back\n \n-=head1 BUGS\n+C<replace> option allows a lot of flexibility in specifying what should be done in case of conflict with an existing object. It implements the following advanced features:\n \n-None known.\n+=over\n \n-=head1 AUTHOR\n+=item *\n \n-Michel Jouvin <jouvin@lal.in2p3.fr>\n+C<none=extension> can be used to establish a default rename extension without enabling replacement. This extension will be used with object types for which replacement is enabled.\n \n-=head1 MAINTAINER\n+=item *\n \n-Michel Jouvin <jouvin@lal.in2p3.fr>\n+Action can be empty. If a default rename extension was defined with C<none=extension>, the object will be renamed before defining the symlink. Else it is interpreted as C<yes>.\n \n-=head1 VERSION\n+=back\n \n-1.3.2\n+=head2 /software/components/symlink/context\n+\n+A list of contextual variables to use in target definitions.  Each entry is a key/value pair with the variable name\n+as the key. The value can contain a command output, as link target definition (see above), with the command to execute\n+enclosed between a pair of C<@@>. Contextual variables are global. They are evaluated once, before starting to define\n+symlinks.\n+\n+\n+=head2 /software/components/symlink/options\n+\n+A list of global options used as default for all links creation/deletion. Supported options are the same as options supported in the link definition (see above), \n+with the exception of C<delete>.\n+\n+=head1 EXAMPLES\n \n-=head1 SEE ALSO\n+    # Define global variable osdir so that it can be use to define symlink targets\n+    \"/software/components/symlink/context\" = {\n+      append(nlist(\n+               \"name\",    \"ostype\",\n+               \"value\",   \"@@uname@@\",\n+      ));\n+    };\n+  \n+    # Various symlink definition examples\n+    \"/software/components/symlink/links\" = {\n+\n+      # Define /usr/bin/tcsh only if /bin/tcsh exists\n+      append(nlist(\n+              \"name\",    \"/usr/bin/tcsh\",\n+              \"target\",   \"/bin/tcsh\",\n+              \"exists\",    true\n+      ));\n+\n+      # Define /atlas with a target actual value including C<uname> command output\n+      append(nlist(\n+              \"name\",    \"/atlas\",\n+              \"target\",   \"/atlas_prod/@@uname@@\",\n+              \"exist\",    true\n+      ));\n+\n+      # Define /lhcb with a target actual value including a contextual variable.\n+      # The contextual variable can be defined before or later in the configuration.\n+      append(nlist(\n+              \"name\",    \"/lhcb\",\n+              \"target\",   \"/lhcb_prod/{ostype}\",\n+              \"exists\",    true\n+      ));\n \n-ncm-ncd(1)\n+    # Allow replacement of empty directories and links\n+    \"/software/components/symlink/options/replace/dirempty\" = \".saved\"; \n+    \"/software/components/symlink/options/replace/link\" = \"yes\";\n \n+      # Define /usr/local as a symlink only if the /lal/prod/{ostype} exists\n+      append(nlist(\n+               \"name\",    \"/usr/local\",\n+               \"target\",   \"/lal_prod/{ostype}\",\n+               \"exists\",    true\n+      ));\n+\n+      # Define symlink /etc/alpine/conf, replacing an existing\n+      # file by the symlink without renaming it\n+      append(nlist(\n+               \"name\", \"/etc/alpine/pine.conf\",\n+               \"target\", \"/lal/gen/etc/pine.conf\",\n+               \"replace\",  nlist(\"all\", \"yes\"),\n+      ));\n+\n+      # Define /htdocs as a link only if /htdocs doesn't exist or is a symlink","path":"ncm-symlink/src/main/perl/symlink.pod","position":209,"original_position":209,"commit_id":"d4713cab284f114226516eba7c62425fda5e84f0","original_commit_id":"d4713cab284f114226516eba7c62425fda5e84f0","user":{"login":"stdweird","id":1517606,"avatar_url":"https://avatars.githubusercontent.com/u/1517606?v=3","gravatar_id":"","url":"https://api.github.com/users/stdweird","html_url":"https://github.com/stdweird","followers_url":"https://api.github.com/users/stdweird/followers","following_url":"https://api.github.com/users/stdweird/following{/other_user}","gists_url":"https://api.github.com/users/stdweird/gists{/gist_id}","starred_url":"https://api.github.com/users/stdweird/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stdweird/subscriptions","organizations_url":"https://api.github.com/users/stdweird/orgs","repos_url":"https://api.github.com/users/stdweird/repos","events_url":"https://api.github.com/users/stdweird/events{/privacy}","received_events_url":"https://api.github.com/users/stdweird/received_events","type":"User","site_admin":false},"body":"with `or is a symlink` you mean `or is a symlink from a different target`?","created_at":"2015-05-09T14:38:22Z","updated_at":"2015-05-09T14:38:22Z","html_url":"https://github.com/quattor/configuration-modules-core/pull/500#discussion_r29993033","pull_request_url":"https://api.github.com/repos/quattor/configuration-modules-core/pulls/500","_links":{"self":{"href":"https://api.github.com/repos/quattor/configuration-modules-core/pulls/comments/29993033"},"html":{"href":"https://github.com/quattor/configuration-modules-core/pull/500#discussion_r29993033"},"pull_request":{"href":"https://api.github.com/repos/quattor/configuration-modules-core/pulls/500"}}},"pull_request":{"url":"https://api.github.com/repos/quattor/configuration-modules-core/pulls/500","id":35051655,"html_url":"https://github.com/quattor/configuration-modules-core/pull/500","diff_url":"https://github.com/quattor/configuration-modules-core/pull/500.diff","patch_url":"https://github.com/quattor/configuration-modules-core/pull/500.patch","issue_url":"https://api.github.com/repos/quattor/configuration-modules-core/issues/500","number":500,"state":"open","locked":false,"title":"ncm-symlinks: documentation reformatting and clarification","user":{"login":"jouvin","id":1511937,"avatar_url":"https://avatars.githubusercontent.com/u/1511937?v=3","gravatar_id":"","url":"https://api.github.com/users/jouvin","html_url":"https://github.com/jouvin","followers_url":"https://api.github.com/users/jouvin/followers","following_url":"https://api.github.com/users/jouvin/following{/other_user}","gists_url":"https://api.github.com/users/jouvin/gists{/gist_id}","starred_url":"https://api.github.com/users/jouvin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jouvin/subscriptions","organizations_url":"https://api.github.com/users/jouvin/orgs","repos_url":"https://api.github.com/users/jouvin/repos","events_url":"https://api.github.com/users/jouvin/events{/privacy}","received_events_url":"https://api.github.com/users/jouvin/received_events","type":"User","site_admin":false},"body":"Fixes #381.","created_at":"2015-05-08T22:17:13Z","updated_at":"2015-05-09T14:38:22Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7e975e9ad09089923dd83ec75b36aa91f76035b7","assignee":null,"milestone":{"url":"https://api.github.com/repos/quattor/configuration-modules-core/milestones/8","html_url":"https://github.com/quattor/configuration-modules-core/milestones/15.4","labels_url":"https://api.github.com/repos/quattor/configuration-modules-core/milestones/8/labels","id":811146,"number":8,"title":"15.4","description":null,"creator":{"login":"jrha","id":323309,"avatar_url":"https://avatars.githubusercontent.com/u/323309?v=3","gravatar_id":"","url":"https://api.github.com/users/jrha","html_url":"https://github.com/jrha","followers_url":"https://api.github.com/users/jrha/followers","following_url":"https://api.github.com/users/jrha/following{/other_user}","gists_url":"https://api.github.com/users/jrha/gists{/gist_id}","starred_url":"https://api.github.com/users/jrha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jrha/subscriptions","organizations_url":"https://api.github.com/users/jrha/orgs","repos_url":"https://api.github.com/users/jrha/repos","events_url":"https://api.github.com/users/jrha/events{/privacy}","received_events_url":"https://api.github.com/users/jrha/received_events","type":"User","site_admin":false},"open_issues":10,"closed_issues":68,"state":"open","created_at":"2014-10-02T10:30:31Z","updated_at":"2015-05-08T22:17:13Z","due_on":"2015-04-28T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/quattor/configuration-modules-core/pulls/500/commits","review_comments_url":"https://api.github.com/repos/quattor/configuration-modules-core/pulls/500/comments","review_comment_url":"https://api.github.com/repos/quattor/configuration-modules-core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/quattor/configuration-modules-core/issues/500/comments","statuses_url":"https://api.github.com/repos/quattor/configuration-modules-core/statuses/d4713cab284f114226516eba7c62425fda5e84f0","head":{"label":"jouvin:ncm-symlink","ref":"ncm-symlink","sha":"d4713cab284f114226516eba7c62425fda5e84f0","user":{"login":"jouvin","id":1511937,"avatar_url":"https://avatars.githubusercontent.com/u/1511937?v=3","gravatar_id":"","url":"https://api.github.com/users/jouvin","html_url":"https://github.com/jouvin","followers_url":"https://api.github.com/users/jouvin/followers","following_url":"https://api.github.com/users/jouvin/following{/other_user}","gists_url":"https://api.github.com/users/jouvin/gists{/gist_id}","starred_url":"https://api.github.com/users/jouvin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jouvin/subscriptions","organizations_url":"https://api.github.com/users/jouvin/orgs","repos_url":"https://api.github.com/users/jouvin/repos","events_url":"https://api.github.com/users/jouvin/events{/privacy}","received_events_url":"https://api.github.com/users/jouvin/received_events","type":"User","site_admin":false},"repo":{"id":8810578,"name":"configuration-modules-core","full_name":"jouvin/configuration-modules-core","owner":{"login":"jouvin","id":1511937,"avatar_url":"https://avatars.githubusercontent.com/u/1511937?v=3","gravatar_id":"","url":"https://api.github.com/users/jouvin","html_url":"https://github.com/jouvin","followers_url":"https://api.github.com/users/jouvin/followers","following_url":"https://api.github.com/users/jouvin/following{/other_user}","gists_url":"https://api.github.com/users/jouvin/gists{/gist_id}","starred_url":"https://api.github.com/users/jouvin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jouvin/subscriptions","organizations_url":"https://api.github.com/users/jouvin/orgs","repos_url":"https://api.github.com/users/jouvin/repos","events_url":"https://api.github.com/users/jouvin/events{/privacy}","received_events_url":"https://api.github.com/users/jouvin/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jouvin/configuration-modules-core","description":"Core NCM components for Quattor","fork":true,"url":"https://api.github.com/repos/jouvin/configuration-modules-core","forks_url":"https://api.github.com/repos/jouvin/configuration-modules-core/forks","keys_url":"https://api.github.com/repos/jouvin/configuration-modules-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jouvin/configuration-modules-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jouvin/configuration-modules-core/teams","hooks_url":"https://api.github.com/repos/jouvin/configuration-modules-core/hooks","issue_events_url":"https://api.github.com/repos/jouvin/configuration-modules-core/issues/events{/number}","events_url":"https://api.github.com/repos/jouvin/configuration-modules-core/events","assignees_url":"https://api.github.com/repos/jouvin/configuration-modules-core/assignees{/user}","branches_url":"https://api.github.com/repos/jouvin/configuration-modules-core/branches{/branch}","tags_url":"https://api.github.com/repos/jouvin/configuration-modules-core/tags","blobs_url":"https://api.github.com/repos/jouvin/configuration-modules-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jouvin/configuration-modules-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jouvin/configuration-modules-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/jouvin/configuration-modules-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jouvin/configuration-modules-core/statuses/{sha}","languages_url":"https://api.github.com/repos/jouvin/configuration-modules-core/languages","stargazers_url":"https://api.github.com/repos/jouvin/configuration-modules-core/stargazers","contributors_url":"https://api.github.com/repos/jouvin/configuration-modules-core/contributors","subscribers_url":"https://api.github.com/repos/jouvin/configuration-modules-core/subscribers","subscription_url":"https://api.github.com/repos/jouvin/configuration-modules-core/subscription","commits_url":"https://api.github.com/repos/jouvin/configuration-modules-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/jouvin/configuration-modules-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/jouvin/configuration-modules-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/jouvin/configuration-modules-core/issues/comments{/number}","contents_url":"https://api.github.com/repos/jouvin/configuration-modules-core/contents/{+path}","compare_url":"https://api.github.com/repos/jouvin/configuration-modules-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jouvin/configuration-modules-core/merges","archive_url":"https://api.github.com/repos/jouvin/configuration-modules-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jouvin/configuration-modules-core/downloads","issues_url":"https://api.github.com/repos/jouvin/configuration-modules-core/issues{/number}","pulls_url":"https://api.github.com/repos/jouvin/configuration-modules-core/pulls{/number}","milestones_url":"https://api.github.com/repos/jouvin/configuration-modules-core/milestones{/number}","notifications_url":"https://api.github.com/repos/jouvin/configuration-modules-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jouvin/configuration-modules-core/labels{/name}","releases_url":"https://api.github.com/repos/jouvin/configuration-modules-core/releases{/id}","created_at":"2013-03-15T22:49:38Z","updated_at":"2015-05-07T11:19:10Z","pushed_at":"2015-05-09T13:20:51Z","git_url":"git://github.com/jouvin/configuration-modules-core.git","ssh_url":"git@github.com:jouvin/configuration-modules-core.git","clone_url":"https://github.com/jouvin/configuration-modules-core.git","svn_url":"https://github.com/jouvin/configuration-modules-core","homepage":null,"size":8529,"stargazers_count":0,"watchers_count":0,"language":"Perl","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"quattor:master","ref":"master","sha":"7b2cd8a0f5f056b3cdb896ee9afcf7fba97a26e1","user":{"login":"quattor","id":1557169,"avatar_url":"https://avatars.githubusercontent.com/u/1557169?v=3","gravatar_id":"","url":"https://api.github.com/users/quattor","html_url":"https://github.com/quattor","followers_url":"https://api.github.com/users/quattor/followers","following_url":"https://api.github.com/users/quattor/following{/other_user}","gists_url":"https://api.github.com/users/quattor/gists{/gist_id}","starred_url":"https://api.github.com/users/quattor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quattor/subscriptions","organizations_url":"https://api.github.com/users/quattor/orgs","repos_url":"https://api.github.com/users/quattor/repos","events_url":"https://api.github.com/users/quattor/events{/privacy}","received_events_url":"https://api.github.com/users/quattor/received_events","type":"Organization","site_admin":false},"repo":{"id":6471233,"name":"configuration-modules-core","full_name":"quattor/configuration-modules-core","owner":{"login":"quattor","id":1557169,"avatar_url":"https://avatars.githubusercontent.com/u/1557169?v=3","gravatar_id":"","url":"https://api.github.com/users/quattor","html_url":"https://github.com/quattor","followers_url":"https://api.github.com/users/quattor/followers","following_url":"https://api.github.com/users/quattor/following{/other_user}","gists_url":"https://api.github.com/users/quattor/gists{/gist_id}","starred_url":"https://api.github.com/users/quattor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quattor/subscriptions","organizations_url":"https://api.github.com/users/quattor/orgs","repos_url":"https://api.github.com/users/quattor/repos","events_url":"https://api.github.com/users/quattor/events{/privacy}","received_events_url":"https://api.github.com/users/quattor/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/quattor/configuration-modules-core","description":"Node Configuration Manager Components for Everyone","fork":false,"url":"https://api.github.com/repos/quattor/configuration-modules-core","forks_url":"https://api.github.com/repos/quattor/configuration-modules-core/forks","keys_url":"https://api.github.com/repos/quattor/configuration-modules-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/quattor/configuration-modules-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/quattor/configuration-modules-core/teams","hooks_url":"https://api.github.com/repos/quattor/configuration-modules-core/hooks","issue_events_url":"https://api.github.com/repos/quattor/configuration-modules-core/issues/events{/number}","events_url":"https://api.github.com/repos/quattor/configuration-modules-core/events","assignees_url":"https://api.github.com/repos/quattor/configuration-modules-core/assignees{/user}","branches_url":"https://api.github.com/repos/quattor/configuration-modules-core/branches{/branch}","tags_url":"https://api.github.com/repos/quattor/configuration-modules-core/tags","blobs_url":"https://api.github.com/repos/quattor/configuration-modules-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/quattor/configuration-modules-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/quattor/configuration-modules-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/quattor/configuration-modules-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/quattor/configuration-modules-core/statuses/{sha}","languages_url":"https://api.github.com/repos/quattor/configuration-modules-core/languages","stargazers_url":"https://api.github.com/repos/quattor/configuration-modules-core/stargazers","contributors_url":"https://api.github.com/repos/quattor/configuration-modules-core/contributors","subscribers_url":"https://api.github.com/repos/quattor/configuration-modules-core/subscribers","subscription_url":"https://api.github.com/repos/quattor/configuration-modules-core/subscription","commits_url":"https://api.github.com/repos/quattor/configuration-modules-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/quattor/configuration-modules-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/quattor/configuration-modules-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/quattor/configuration-modules-core/issues/comments{/number}","contents_url":"https://api.github.com/repos/quattor/configuration-modules-core/contents/{+path}","compare_url":"https://api.github.com/repos/quattor/configuration-modules-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/quattor/configuration-modules-core/merges","archive_url":"https://api.github.com/repos/quattor/configuration-modules-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/quattor/configuration-modules-core/downloads","issues_url":"https://api.github.com/repos/quattor/configuration-modules-core/issues{/number}","pulls_url":"https://api.github.com/repos/quattor/configuration-modules-core/pulls{/number}","milestones_url":"https://api.github.com/repos/quattor/configuration-modules-core/milestones{/number}","notifications_url":"https://api.github.com/repos/quattor/configuration-modules-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/quattor/configuration-modules-core/labels{/name}","releases_url":"https://api.github.com/repos/quattor/configuration-modules-core/releases{/id}","created_at":"2012-10-31T09:08:07Z","updated_at":"2015-05-08T20:51:08Z","pushed_at":"2015-05-09T13:20:51Z","git_url":"git://github.com/quattor/configuration-modules-core.git","ssh_url":"git@github.com:quattor/configuration-modules-core.git","clone_url":"https://github.com/quattor/configuration-modules-core.git","svn_url":"https://github.com/quattor/configuration-modules-core","homepage":"www.quattor.org","size":15021,"stargazers_count":7,"watchers_count":7,"language":"Perl","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":28,"mirror_url":null,"open_issues_count":44,"forks":28,"open_issues":44,"watchers":7,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/quattor/configuration-modules-core/pulls/500"},"html":{"href":"https://github.com/quattor/configuration-modules-core/pull/500"},"issue":{"href":"https://api.github.com/repos/quattor/configuration-modules-core/issues/500"},"comments":{"href":"https://api.github.com/repos/quattor/configuration-modules-core/issues/500/comments"},"review_comments":{"href":"https://api.github.com/repos/quattor/configuration-modules-core/pulls/500/comments"},"review_comment":{"href":"https://api.github.com/repos/quattor/configuration-modules-core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/quattor/configuration-modules-core/pulls/500/commits"},"statuses":{"href":"https://api.github.com/repos/quattor/configuration-modules-core/statuses/d4713cab284f114226516eba7c62425fda5e84f0"}}}}