{"action":"created","comment":{"url":"https://api.github.com/repos/quattor/quattor.github.com/pulls/comments/27205825","id":27205825,"diff_hunk":"@@ -0,0 +1,850 @@\n+---\n+layout: article\n+title: Bootstrapping and Troubleshooting SCDB\n+category: documentation\n+author: Michel Jouvin\n+---\n+\n+This page contains a step-by-step installation guide for Quattor SCDB, the second generation of Quattor configuration database, \n+and its associated deployment tools. It also contains some instructions to troubleshoot SCDB issues, in particular failure to deploy changes.\n+\n+***SCDB is now considered a legacy configuration database. If you start a new site you are invited to look [Aquilon](/documentation/2012/10/31/install-aquilon.html), the new configuration\n+database, that provides more flexible workflows and an improved scalability.***\n+\n+SCDB relies on several underlying services not specific to Quattor, like Apache, Subversion, \n+DHCP, TFTP. Installing SCDB involves installing these services and configure them for Quattor use. As these services can be used for\n+other purposes than Quattor, the actual details of the service configurations can be potentially site-specific and instructions given here \n+may need to be adapted. For the sake of simplicity, the configuration steps for the underlying services assume that these services are \n+dedicated to Quattor.\n+\n+The instructions in this documentation assume the following conventions: \n+\n+* SVN server is `svn.example.org`. This clearly need to be updated to reflect your host/domain name.\n+* URL of SVN repository associated is `http://svn.example.org/svn/quattor`: this may be changed to your needs.\n+* TFTP server root directory is the default one, `/tftpboot`.\n+ \n+Also,  As stated in this guide, this is not at all a requirement. If you want to use an already existing service for Quattor, \n+you'll need to tweak the proposed configuration to fit in your existing configuration. This may require information not present in this guide: \n+in this case refer to the service documentation. If you have no specific constraint and you aren't familiar with these services, \n+you are probably better to stick with a configuration as close as possible with the one used in examples.\n+\n+*Note: this documentation tries to be as generic as possible as far as OS versions are concerned, but the commands used in examples have \n+been tested only on Scientific Linux 6. \n+They may need to be modified when underlying services like SVN or DHCP are hosted on another platform.*\n+\n+\n+## OS Installation\n+\n+To proceed with the next steps, you need to install a basic RHEL or derivative \n+server configuration by any mean appropriate to you (CD-Rom, Kickstart, imaging...).\n+Configure the network according to your site requirements and ensure that you have\n+a network connection with the outside world.\n+\n+After doing the base OS installation, configure the two following YUM repositories by adding\n+the following files to `/etc/yum.repos.d`:\n+\n+* EPEL\n+\n+  ```bash\n+  # Adapt to your OS version if not using EL6\n+  # You may also want to use another EPEL mirror closer to you\n+  cat >/etc/yum.repos.d/epel.repo <<EOF\n+  [sl6_epel]\n+  name=sl6_epel\n+  baseurl=http://mirrors.ircam.fr/pub/fedora/epel/6/x86_64/enabled=1\n+  gpgcheck=0\n+  EOF\n+  ```\n+\n+* Quattor\n+\n+  ```bash\n+  cat >/etc/yum.repos.d/quattor.repo <<EOF\n+  [quattor_release]\n+  name=Quattor current release\n+  baseurl=    http://yum.quattor.org/current\n+  gpgcheck=0\n+  EOF\n+  ```\n+\n+\n+## Web Server Installation\n+\n+The Quattor server needs to run a Web server to serve profiles,\n+kickstart configuration files and execute the CGI script at end of\n+a machine installation to change PXE boot to local disk. In addition, \n+you may want to use this Web server for serving YUM repositories if you\n+don't already have one for this purpose.\n+\n+Web server installation requires nothing specific, just the\n+configuration of a document root with enough space if you plan to\n+serve RPMs and the configuration of the CGI script. This Web server can be\n+shared with other usages and you can use an Apache virtual host.\n+\n+Apache is the recommended Web server (installation instructions in this documentation\n+refer to Apache) but nothing prevent you from using another one if you prefer and if\n+you know how to achieve the same configuration.\n+\n+### Apache Recommended Settings\n+\n+SCDB has no strong requirement concerning Apache configuration. It\n+needs two distinct URLs for two different purposes :\n+\n+ * Profiles: machine profiles are all stored under the same parent URL shared. \n+   The files in this area are produced by the pan\n+   compiler when executing `ant deploy`.\n+ * Kickstart configuration files: this URL is used to store the\n+   Kickstart configuration file for each machine. These files are\n+   produced by `aii-shellfe --configure`.\n+   \n+In addition, you may want to configure the area (*directory*) used for serving\n+YUM repositories if you use the same server for this.\n+\n+Recommended setting for these areas are :\n+\n+ * Restrict access to profile and Kickstart configuration to IP\n+   adresses (or subnets) matching Quattor-managed machines, as these files may\n+   contain sensitive information like encrypted passwords or MySQL\n+   passwords (cleartext).   \n+ * Configure all these areas to ignore any `index.html` file and\n+   auto-indexing.\n+\n+Configuration for these areas is normally done by creating a file\n+`/etc/httpd/conf.d/quattor.conf` with directives like the following\n+one for each area (replace `/path/to/area` by your actual directory\n+name) :\n+\n+```\n+<Directory /path/to/area>\n+    Options Indexes\n+    DirectoryIndex VeryUnlikelyDirectoryIndex.none\n+    AllowOverride None\n+</Directory>\n+```\n+\n+*Note: if you are installing a new Apache server, don't forget to\n+edit `DocumentRoot` in `/etc/httpd/conf/httpd.conf` to reflect your\n+local configuration.*\n+\n+*Note: even though it is generally easy to rebuild it, it is recommended to backup\n+`quattor.conf` file.*\n+\n+## Subversion Server\n+\n+There is no need for a Subversion server dedicated to Quattor. SCDB is\n+just one repository from the Subversion point of view. If you already\n+run a Subversion server, you can skip the installation part and go\n+directly to the configuration part.\n+\n+### Subversion Installation and Configuration\n+\n+There are many possible installation options for a Subversion\n+server. The best is to install it as Apache module, anyway. There is\n+no requirement for the Subversion server to run on a Linux machine,\n+even if it is the installation option documented here. You can even\n+choose to use a Subversion server outside of your site, if you think\n+the network connection is good enough.\n+\n+*Note: Quattor has no requirement regarding the name of the directory where SVN repository is located and \n+the URL associated with the repository. Even a repository non dedicated to SCDB (with already existing contents) can be used. \n+The examples in this page are based on a repository created as part of the SCDB installation and associated with URL \n+`http://svn.example.org/svn/quattor`. If you are not familiar with SVN and SVN management, you are probably better to use a configuration \n+as close as possible to the examples.*\n+\n+If you need to install a Subversion server, use YUM. Don't forget to install the Apache module which is\n+in a separate RPM. A typical SVN installation is done with the following command:\n+\n+```bash\n+yum install subversion mod_dav_svn\n+```\n+\n+After installing, you have to configure the Subversion server. Refer to [https://subversion.apache.org Subversion web site] \n+for details. Configuration the SVN server typically involves:\n+* Creation of directory which will be the parent for SVN repositories (this example uses `/var/svn`):\n+ \n+  ```bash\n+  mkdir -p /var/svn\n+  ```\n+\n+* Create Subversion repository that will be used for Quattor SCDB (don't forget to **backup this directory**):\n+  ```bash\n+  svnadmin create /var/svn/quattor\n+  # Repository must be owned by Apache account\n+  chown -R apache:apache /var/svn/quattor\n+  ```\n+\n+Apache SVN module configuration (`/etc/httpd/conf.d/subversion.conf`)\n+must be edited to configure URL used by SVN (examples in this page assume this is `/svn`)  \n+and bind it to the directory created at the previous step. A typical example, based on previously created repository \n+(adjust paths to reflect your configuration) is:\n+\n+```\n+<Location /svn>\n+   DAV svn\n+   SVNParentPath /var/svn\n+\n+   AuthzSVNAccessFile security/svn-repositories-access\n+\n+   AuthType        Basic\n+   AuthUserFile    security/passwd\n+   AuthGroupFile   security/group\n+   AuthName        \"Grid Tutorial SVN server\"\n+\n+   # Limit write permission to list of valid users.\n+   <LimitExcept GET PROPFIND OPTIONS REPORT>\n+      # Require SSL connection for password protection.\n+      # SSLRequireSSL\n+\n+      Require valid-user\n+   </LimitExcept>\n+</Location>\n+```\n+\n+To configure SVN authentication for SCDB repository, you need to\n+create one or more accounts in `/etc/httpd/security/passwd`. You can\n+use `htpasswd` or `openssl passwd -apr1` to generate an encrypted\n+password.\n+\n+You also need to define SVN ACLs in\n+`/etc/httpd/security/svn-repositories-access`. To start, a typical file\n+is (it assumes the account you created is called `quattormgr`):\n+\n+```\n+[groups]\n+quattor-mgrs = quattormgr\n+\n+[/]\n+* = r\n+@quattor-mgrs = rw\n+```\n+\n+*Note: even though it is easily rebuilt, it is better to backup `subversion.conf` file and files in `/etc/httpd/security`.*\n+\n+### Repository configuration\n+\n+For Quattor, you need to create a repository with the usual structure inside it (or inside a branch) :\n+\n+ * `trunk`: where you make the changes to your running configuration\n+ * `tags`: used by SCDB administration tool to do deployment\n+ * `branches` (optional): for alternative developments\n+\n+Assuming the repository has already been created (see previous step) and that its URL `http://svn.example.org/quattor`, \n+one of the possible methods to initialize this structure is:\n+\n+```bash\n+mkdir /tmp/scdb\n+cd /tmp/scdb\n+mkdir trunk\n+mkdir tags\n+mkdir branches\n+svn import . http://svn.example.org/svn/quattor --message 'Quattor repository layout initialized'\n+```\n+\n+*Note: as stated previously, there is no need to dedicate a repository to SCDB and the same commands can be used to import a specific branch\n+in an existing repository.*\n+\n+## DHCP and TFTPD installation and configuration\n+\n+### DHCP and TFTPD installation\n+\n+Install DHCPD and TFTPD server from OS distribution. You can do it with the following YUM command:\n+\n+```bash\n+yum install dhcp tftp-server\n+```\n+\n+### DHCP configuraton\n+\n+If the DHCP server will be used for Quattor-managed nodes only, a basic DHCP configuration (`/etc/dhcpd.conf`) is (update hosts/domain name/addresses\n+appropriately):\n+\n+```\n+# DHCP server configuration\n+\n+authoritative;\n+allow bootp;\n+#allow duplicates;\n+ddns-update-style none;\n+#omapi-port 7921;       # Use a non standard port (standard = 7911)\n+\n+# Edit to reflect your DNS domain name and name servers (a comma-separated list is allowed)\n+option domain-name \"example.org\";\n+option domain-name-servers dns.example.org;\n+option netbios-node-type 2;\n+\n+# Update to reflect your IP subnet\n+subnet 123.456.789.0 netmask 255.255.255.0 {\n+\n+  # Parameters for the installation via PXE using pxelinux\n+  filename                           \"quattor/pxelinux.0\";\n+  #option dhcp-class-identifier       \"PXEClient\";\n+  option vendor-encapsulated-options 01:04:00:00:00:00:ff;\n+\n+  # This is required on RHEL/SL/SLC/CentOS 5.X\n+  next-server  tftp.server.example.org;\n+\n+  # This is now a required line in DHCP configuration.  This\n+  # option gives the behavior of the previous versions.\n+  ddns-update-style ad-hoc;\n+\n+  option routers 123.456.789.1;\n+}\n+```\n+\n+If you want to share DHCP between Quattor and non Quattor usage, it's\n+probably better to move the last part (`subnet...`) into a separate\n+file, like `/etc/dhcpd/quattor.conf` and include it in the main\n+configuration file by:\n+\n+```\n+include \"/etc/dhcpd/quattor.conf\";\n+```\n+\n+See `man dhcpd` and `man dhcpd.conf` for details about DHCP server\n+configuration, in particular to support multiple subnets and other\n+advanced features.\n+\n+### TFTPD configuration\n+\n+TFTP server is run by `xinetd`. In the default configuration provided by the OS installation, it is generally\n+disabled. Enable it by editing `/etc/xinetd.d/tftp`, modifying `disable` parameter from `yes` to `no`. \n+\n+Option `server_args` allows to define the TFTP root directory. By default, it is `/tftpboot`. If you'd like to use another location you need \n+to update this option and you'll need to define the variable `AII_NBP_DIR` to this directory when configuring your \n+[site parameters](#Configuration of AII).\n+\n+\n+## Quattor Deployment Server\n+\n+Quattor packages required for installing a deployment server can be easily installed by YUM. For this, create the following YUM repository definition on your server:\n+\n+```bash\n+cat > /root/.quattor/yumroot/quattor.repo <<EOF\n+[quattor_release]\n+name=quattor_release\n+baseurl=http://yum.quattor.org/current\n+EOF\n+```\n+\n+You will also need access to the EPEL repository, if you do not have a local mirror you can get the RPMs for the latest releases of EPEL from https://fedoraproject.org/wiki/EPEL and install with:\n+\n+```bash\n+rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm\n+```\n+\n+After configuring the YUM repositories, you should be able to install the required RPMs with:\n+\n+```bash\n+yum install aii-pxelinux ncm-ncd ncm-ccm\n+```\n+\n+*Note: when you have succeeding installing and configuring Quattor, it is recommended to add a profile for your deployment server so that it will be managed by Quattor! This will help to keep it consistent and up-to-date.*\n+\n+## SCDB Initialization\n+\n+You must have created a repository for Quattor and initialized its structure as explained in section [/wiki/Download/SCDB#SubversionServer Subversion Server Installation].","path":"_posts/2015-03-25-SCDB-installation.md","position":345,"original_position":345,"commit_id":"f6b0a093b1e31ba1e1acb3b084a534f77fcdf581","original_commit_id":"f6b0a093b1e31ba1e1acb3b084a534f77fcdf581","user":{"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},"body":"initialised","created_at":"2015-03-26T11:44:10Z","updated_at":"2015-03-26T11:44:10Z","html_url":"https://github.com/quattor/quattor.github.com/pull/137#discussion_r27205825","pull_request_url":"https://api.github.com/repos/quattor/quattor.github.com/pulls/137","_links":{"self":{"href":"https://api.github.com/repos/quattor/quattor.github.com/pulls/comments/27205825"},"html":{"href":"https://github.com/quattor/quattor.github.com/pull/137#discussion_r27205825"},"pull_request":{"href":"https://api.github.com/repos/quattor/quattor.github.com/pulls/137"}}},"pull_request":{"url":"https://api.github.com/repos/quattor/quattor.github.com/pulls/137","id":31979225,"html_url":"https://github.com/quattor/quattor.github.com/pull/137","diff_url":"https://github.com/quattor/quattor.github.com/pull/137.diff","patch_url":"https://github.com/quattor/quattor.github.com/pull/137.patch","issue_url":"https://api.github.com/repos/quattor/quattor.github.com/issues/137","number":137,"state":"open","locked":false,"title":"Migrate SCDB installation doc from LAL wiki","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":"Work in progress. Reviewed until `Quattor Server` heading.\r\n\r\nFixes #129.","created_at":"2015-03-26T00:19:54Z","updated_at":"2015-03-26T11:44:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f43acc1c52a02101d7b8fffc7a4bf3469b057689","assignee":{"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},"milestone":null,"commits_url":"https://api.github.com/repos/quattor/quattor.github.com/pulls/137/commits","review_comments_url":"https://api.github.com/repos/quattor/quattor.github.com/pulls/137/comments","review_comment_url":"https://api.github.com/repos/quattor/quattor.github.com/pulls/comments{/number}","comments_url":"https://api.github.com/repos/quattor/quattor.github.com/issues/137/comments","statuses_url":"https://api.github.com/repos/quattor/quattor.github.com/statuses/f6b0a093b1e31ba1e1acb3b084a534f77fcdf581","head":{"label":"jouvin:scdb-install","ref":"scdb-install","sha":"f6b0a093b1e31ba1e1acb3b084a534f77fcdf581","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":18037113,"name":"quattor.github.com","full_name":"jouvin/quattor.github.com","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/quattor.github.com","description":"External Website and Project Documentation","fork":true,"url":"https://api.github.com/repos/jouvin/quattor.github.com","forks_url":"https://api.github.com/repos/jouvin/quattor.github.com/forks","keys_url":"https://api.github.com/repos/jouvin/quattor.github.com/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jouvin/quattor.github.com/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jouvin/quattor.github.com/teams","hooks_url":"https://api.github.com/repos/jouvin/quattor.github.com/hooks","issue_events_url":"https://api.github.com/repos/jouvin/quattor.github.com/issues/events{/number}","events_url":"https://api.github.com/repos/jouvin/quattor.github.com/events","assignees_url":"https://api.github.com/repos/jouvin/quattor.github.com/assignees{/user}","branches_url":"https://api.github.com/repos/jouvin/quattor.github.com/branches{/branch}","tags_url":"https://api.github.com/repos/jouvin/quattor.github.com/tags","blobs_url":"https://api.github.com/repos/jouvin/quattor.github.com/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jouvin/quattor.github.com/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jouvin/quattor.github.com/git/refs{/sha}","trees_url":"https://api.github.com/repos/jouvin/quattor.github.com/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jouvin/quattor.github.com/statuses/{sha}","languages_url":"https://api.github.com/repos/jouvin/quattor.github.com/languages","stargazers_url":"https://api.github.com/repos/jouvin/quattor.github.com/stargazers","contributors_url":"https://api.github.com/repos/jouvin/quattor.github.com/contributors","subscribers_url":"https://api.github.com/repos/jouvin/quattor.github.com/subscribers","subscription_url":"https://api.github.com/repos/jouvin/quattor.github.com/subscription","commits_url":"https://api.github.com/repos/jouvin/quattor.github.com/commits{/sha}","git_commits_url":"https://api.github.com/repos/jouvin/quattor.github.com/git/commits{/sha}","comments_url":"https://api.github.com/repos/jouvin/quattor.github.com/comments{/number}","issue_comment_url":"https://api.github.com/repos/jouvin/quattor.github.com/issues/comments{/number}","contents_url":"https://api.github.com/repos/jouvin/quattor.github.com/contents/{+path}","compare_url":"https://api.github.com/repos/jouvin/quattor.github.com/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jouvin/quattor.github.com/merges","archive_url":"https://api.github.com/repos/jouvin/quattor.github.com/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jouvin/quattor.github.com/downloads","issues_url":"https://api.github.com/repos/jouvin/quattor.github.com/issues{/number}","pulls_url":"https://api.github.com/repos/jouvin/quattor.github.com/pulls{/number}","milestones_url":"https://api.github.com/repos/jouvin/quattor.github.com/milestones{/number}","notifications_url":"https://api.github.com/repos/jouvin/quattor.github.com/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jouvin/quattor.github.com/labels{/name}","releases_url":"https://api.github.com/repos/jouvin/quattor.github.com/releases{/id}","created_at":"2014-03-23T16:05:06Z","updated_at":"2014-06-24T10:55:30Z","pushed_at":"2015-03-26T07:53:09Z","git_url":"git://github.com/jouvin/quattor.github.com.git","ssh_url":"git@github.com:jouvin/quattor.github.com.git","clone_url":"https://github.com/jouvin/quattor.github.com.git","svn_url":"https://github.com/jouvin/quattor.github.com","homepage":"www.quattor.org","size":1894,"stargazers_count":0,"watchers_count":0,"language":"CSS","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"quattor:master","ref":"master","sha":"d24ced14bc9dfa0086852c17006ad6518514f7d8","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":3776935,"name":"quattor.github.com","full_name":"quattor/quattor.github.com","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/quattor.github.com","description":"External Website and Project Documentation","fork":false,"url":"https://api.github.com/repos/quattor/quattor.github.com","forks_url":"https://api.github.com/repos/quattor/quattor.github.com/forks","keys_url":"https://api.github.com/repos/quattor/quattor.github.com/keys{/key_id}","collaborators_url":"https://api.github.com/repos/quattor/quattor.github.com/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/quattor/quattor.github.com/teams","hooks_url":"https://api.github.com/repos/quattor/quattor.github.com/hooks","issue_events_url":"https://api.github.com/repos/quattor/quattor.github.com/issues/events{/number}","events_url":"https://api.github.com/repos/quattor/quattor.github.com/events","assignees_url":"https://api.github.com/repos/quattor/quattor.github.com/assignees{/user}","branches_url":"https://api.github.com/repos/quattor/quattor.github.com/branches{/branch}","tags_url":"https://api.github.com/repos/quattor/quattor.github.com/tags","blobs_url":"https://api.github.com/repos/quattor/quattor.github.com/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/quattor/quattor.github.com/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/quattor/quattor.github.com/git/refs{/sha}","trees_url":"https://api.github.com/repos/quattor/quattor.github.com/git/trees{/sha}","statuses_url":"https://api.github.com/repos/quattor/quattor.github.com/statuses/{sha}","languages_url":"https://api.github.com/repos/quattor/quattor.github.com/languages","stargazers_url":"https://api.github.com/repos/quattor/quattor.github.com/stargazers","contributors_url":"https://api.github.com/repos/quattor/quattor.github.com/contributors","subscribers_url":"https://api.github.com/repos/quattor/quattor.github.com/subscribers","subscription_url":"https://api.github.com/repos/quattor/quattor.github.com/subscription","commits_url":"https://api.github.com/repos/quattor/quattor.github.com/commits{/sha}","git_commits_url":"https://api.github.com/repos/quattor/quattor.github.com/git/commits{/sha}","comments_url":"https://api.github.com/repos/quattor/quattor.github.com/comments{/number}","issue_comment_url":"https://api.github.com/repos/quattor/quattor.github.com/issues/comments{/number}","contents_url":"https://api.github.com/repos/quattor/quattor.github.com/contents/{+path}","compare_url":"https://api.github.com/repos/quattor/quattor.github.com/compare/{base}...{head}","merges_url":"https://api.github.com/repos/quattor/quattor.github.com/merges","archive_url":"https://api.github.com/repos/quattor/quattor.github.com/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/quattor/quattor.github.com/downloads","issues_url":"https://api.github.com/repos/quattor/quattor.github.com/issues{/number}","pulls_url":"https://api.github.com/repos/quattor/quattor.github.com/pulls{/number}","milestones_url":"https://api.github.com/repos/quattor/quattor.github.com/milestones{/number}","notifications_url":"https://api.github.com/repos/quattor/quattor.github.com/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/quattor/quattor.github.com/labels{/name}","releases_url":"https://api.github.com/repos/quattor/quattor.github.com/releases{/id}","created_at":"2012-03-20T15:50:40Z","updated_at":"2015-03-24T16:55:01Z","pushed_at":"2015-03-26T07:54:49Z","git_url":"git://github.com/quattor/quattor.github.com.git","ssh_url":"git@github.com:quattor/quattor.github.com.git","clone_url":"https://github.com/quattor/quattor.github.com.git","svn_url":"https://github.com/quattor/quattor.github.com","homepage":"www.quattor.org","size":2103,"stargazers_count":8,"watchers_count":8,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":10,"mirror_url":null,"open_issues_count":7,"forks":10,"open_issues":7,"watchers":8,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/quattor/quattor.github.com/pulls/137"},"html":{"href":"https://github.com/quattor/quattor.github.com/pull/137"},"issue":{"href":"https://api.github.com/repos/quattor/quattor.github.com/issues/137"},"comments":{"href":"https://api.github.com/repos/quattor/quattor.github.com/issues/137/comments"},"review_comments":{"href":"https://api.github.com/repos/quattor/quattor.github.com/pulls/137/comments"},"review_comment":{"href":"https://api.github.com/repos/quattor/quattor.github.com/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/quattor/quattor.github.com/pulls/137/commits"},"statuses":{"href":"https://api.github.com/repos/quattor/quattor.github.com/statuses/f6b0a093b1e31ba1e1acb3b084a534f77fcdf581"}}}}