{"action":"created","comment":{"url":"https://api.github.com/repos/Microsoft/oxa-tools/pulls/comments/83565749","pull_request_review_id":4401331,"id":83565749,"diff_hunk":"@@ -0,0 +1,413 @@\n+#!/bin/bash\n+\n+# The MIT License (MIT)\n+#\n+# Copyright (c) 2015 Microsoft Azure\n+#\n+# Permission is hereby granted, free of charge, to any person obtaining a copy\n+# of this software and associated documentation files (the \"Software\"), to deal\n+# in the Software without restriction, including without limitation the rights\n+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+# copies of the Software, and to permit persons to whom the Software is\n+# furnished to do so, subject to the following conditions:\n+# \n+# The above copyright notice and this permission notice shall be included in all\n+# copies or substantial portions of the Software.\n+# \n+# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n+# SOFTWARE.\n+\n+#--------------------------------------------------------------------------------------------------\n+# MongoDB Template for Azure Resource Manager (brought to you by Full Scale 180 Inc)\n+#\n+# This script installs MongoDB on each Azure virtual machine. The script will be supplied with\n+# runtime parameters declared from within the corresponding ARM template.\n+#--------------------------------------------------------------------------------------------------\n+\n+PACKAGE_URL=http://repo.mongodb.org/apt/ubuntu\n+PACKAGE_NAME=mongodb-org\n+REPLICA_SET_KEY_DATA=\"\"\n+REPLICA_SET_NAME=\"\"\n+REPLICA_SET_KEY_FILE=\"/etc/mongo-replicaset-key\"\n+DATA_DISKS=\"/datadisks\"\n+DATA_MOUNTPOINT=\"$DATA_DISKS/disk1\"\n+MONGODB_DATA=\"$DATA_MOUNTPOINT/mongodb\"\n+MONGODB_DATA_INTERIM_ROOTPATH=\"/mongo\"\n+MONGODB_PORT=27017\n+IS_ARBITER=false\n+IS_LAST_MEMBER=false\n+JOURNAL_ENABLED=true\n+ADMIN_USER_NAME=\"\"\n+ADMIN_USER_PASSWORD=\"\"\n+INSTANCE_COUNT=1\n+NODE_IP_PREFIX=\"10.0.0.1\"\n+LOGGING_KEY=\"[logging-key]\"\n+OFFSET=0\n+\n+help()\n+{\n+\techo \"This script installs MongoDB on the Ubuntu virtual machine image\"\n+\techo \"Options:\"\n+\techo \"\t\t-i Installation package URL\"\n+\techo \"\t\t-b Installation package name\"\n+\techo \"\t\t-r Replica set name\"\n+\techo \"\t\t-k Replica set key\"\n+\techo \"\t\t-u System administrator's user name\"\n+\techo \"\t\t-p System administrator's password\"\n+\techo \"\t\t-x Member node IP prefix\"\t\n+\techo \"\t\t-n Number of member nodes\"\t\n+\techo \"\t\t-a (arbiter indicator)\"\t\n+\techo \"\t\t-l (last member indicator)\"\t\n+\techo \"\t\t-o (IP Address Offset)\"\t\n+}\n+\n+log()\n+{\n+\t# If you want to enable this logging add a un-comment the line below and add your account key \n+\t#curl -X POST -H \"content-type:text/plain\" --data-binary \"$(date) | ${HOSTNAME} | $1\" https://logs-01.loggly.com/inputs/${LOGGING_KEY}/tag/redis-extension,${HOSTNAME}\n+\techo \"$1\"\n+}\n+\n+log \"Begin execution of MongoDB installation script extension on ${HOSTNAME}\"\n+\n+if [ \"${UID}\" -ne 0 ];\n+then\n+    log \"Script executed without root permissions\"\n+    echo \"You must be root to run this program.\" >&2\n+    exit 3\n+fi\n+\n+# Parse script parameters\n+while getopts :i:b:r:k:u:p:x:n:o:alh optname; do\n+\n+\t# Log input parameters (except the admin password) to facilitate troubleshooting\n+\tif [ ! \"$optname\" == \"p\" ] && [ ! \"$optname\" == \"k\" ]; then\n+\t\tlog \"Option $optname set with value ${OPTARG}\"\n+\tfi\n+  \n+\tcase $optname in\n+\ti) # Installation package location\n+\t\tPACKAGE_URL=${OPTARG}\n+\t\t;;\n+\tb) # Installation package name\n+\t\tPACKAGE_NAME=${OPTARG}\n+\t\t;;\n+\tr) # Replica set name\n+\t\tREPLICA_SET_NAME=${OPTARG}\n+\t\t;;\t\n+\tk) # Replica set key\n+\t\tREPLICA_SET_KEY_DATA=${OPTARG}\n+\t\t;;\t\n+\tu) # Administrator's user name\n+\t\tADMIN_USER_NAME=${OPTARG}\n+\t\t;;\t\t\n+\tp) # Administrator's user name\n+\t\tADMIN_USER_PASSWORD=${OPTARG}\n+\t\t;;\t\n+\tx) # Private IP address prefix\n+\t\tNODE_IP_PREFIX=${OPTARG}\n+\t\t;;\t\t\t\t\n+\tn) # Number of instances\n+\t\tINSTANCE_COUNT=${OPTARG}\n+\t\t;;\t\t\n+\to) # IP Address Offset\n+\t\tOFFSET=${OPTARG}\n+\t\t;;\t\t\n+\ta) # Arbiter indicator\n+\t\tIS_ARBITER=true\n+\t\tJOURNAL_ENABLED=false\n+\t\t;;\t\t\n+\tl) # Last member indicator\n+\t\tIS_LAST_MEMBER=true\n+\t\t;;\t\t\n+    h)  # Helpful hints\n+\t\thelp\n+\t\texit 2\n+\t\t;;\n+    \\?) # Unrecognized option - show help\n+\t\techo -e \\\\n\"Option -${BOLD}$OPTARG${NORM} not allowed.\"\n+\t\thelp\n+\t\texit 2\n+\t\t;;\n+  esac\n+done\n+\n+# Validate parameters\n+if [ \"$ADMIN_USER_NAME\" == \"\" ] || [ \"$ADMIN_USER_PASSWORD\" == \"\" ];\n+then\n+    log \"Script executed without admin credentials\"\n+    echo \"You must provide a name and password for the system administrator.\" >&2\n+    exit 3\n+fi\n+\n+#############################################################################\n+tune_memory()\n+{\n+\t# Disable THP on a running system\n+\techo never > /sys/kernel/mm/transparent_hugepage/enabled\n+\techo never > /sys/kernel/mm/transparent_hugepage/defrag\n+\n+\t# Disable THP upon reboot\n+\tcp -p /etc/rc.local /etc/rc.local.`date +%Y%m%d-%H:%M`\n+\tsed -i -e '$i \\ if test -f /sys/kernel/mm/transparent_hugepage/enabled; then \\\n+ \t\t\t echo never > /sys/kernel/mm/transparent_hugepage/enabled \\\n+\t\t  fi \\ \\\n+\t\tif test -f /sys/kernel/mm/transparent_hugepage/defrag; then \\\n+\t\t   echo never > /sys/kernel/mm/transparent_hugepage/defrag \\\n+\t\tfi \\\n+\t\t\\n' /etc/rc.local\n+}\n+\n+tune_system()\n+{\n+\t# Add local machine name to the hosts file to facilitate IP address resolution\n+\tif grep -q \"${HOSTNAME}\" /etc/hosts\n+\tthen\n+\t  echo \"${HOSTNAME} was found in /etc/hosts\"\n+\telse\n+\t  echo \"${HOSTNAME} was not found in and will be added to /etc/hosts\"\n+\t  # Append it to the hsots file if not there\n+\t  echo \"127.0.0.1 $(hostname)\" >> /etc/hosts\n+\t  log \"Hostname ${HOSTNAME} added to /etc/hosts\"\n+\tfi\t\n+}\n+\n+#############################################################################\n+install_mongodb()\n+{\n+\tlog \"Downloading MongoDB package $PACKAGE_NAME from $PACKAGE_URL\"\n+\n+\t# Configure mongodb.list file with the correct location\n+\t#apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10\n+\tsudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927\n+\techo \"deb ${PACKAGE_URL} \"$(lsb_release -sc)\"/mongodb-org/3.2 multiverse\" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list\n+\n+\t# Install updates\n+\tapt-get -y update\n+\n+\t# Remove any previously created configuration file to avoid a prompt\n+\tif [ -f /etc/mongod.conf ]; then\n+\t\trm /etc/mongod.conf\n+\tfi\n+\t\n+\t#Install Mongo DB\n+\tlog \"Installing MongoDB package $PACKAGE_NAME\"\n+\tapt-get -y install $PACKAGE_NAME\n+\t\n+\t# Stop Mongod as it may be auto-started during the above step (which is not desirable)\n+\tstop_mongodb\n+}\n+\n+#############################################################################\n+configure_datadisks()\n+{\n+\t# Stripe all of the data \n+\tlog \"Formatting and configuring the data disks\"\n+\t\n+\tbash ./vm-disk-utils-0.1.sh -b $DATA_DISKS -s\n+}\n+\n+#############################################################################\n+configure_replicaset()\n+{\n+\tlog \"Configuring a replica set $REPLICA_SET_NAME\"\n+\t\n+\techo \"$REPLICA_SET_KEY_DATA\" | tee \"$REPLICA_SET_KEY_FILE\" > /dev/null\n+\tchown -R mongodb:mongodb \"$REPLICA_SET_KEY_FILE\"\n+\tchmod 600 \"$REPLICA_SET_KEY_FILE\"\n+\t\n+\t# Enable replica set in the configuration file\n+\tsed -i \"s|#keyFile: \\\"\\\"$|keyFile: \\\"${REPLICA_SET_KEY_FILE}\\\"|g\" /etc/mongod.conf\n+\tsed -i \"s|authorization: \\\"disabled\\\"$|authorization: \\\"enabled\\\"|g\" /etc/mongod.conf\n+\tsed -i \"s|#replication:|replication:|g\" /etc/mongod.conf\n+\tsed -i \"s|#replSetName:|replSetName:|g\" /etc/mongod.conf\n+\t\n+\t# Stop the currently running MongoDB daemon as we will need to reload its configuration\n+\tstop_mongodb\n+\t\n+\t# Attempt to start the MongoDB daemon so that configuration changes take effect\n+\tstart_mongodb\n+\t\n+\t# Initiate a replica set (only run this section on the very last node)\n+\tif [ \"$IS_LAST_MEMBER\" = true ]; then\n+\t\t# Log a message to facilitate troubleshooting\n+\t\tlog \"Initiating a replica set $REPLICA_SET_NAME with $INSTANCE_COUNT members\"\n+\t\n+\t\t# Initiate a replica set\n+\t\tmongo master -u $ADMIN_USER_NAME -p $ADMIN_USER_PASSWORD --host 127.0.0.1 --eval \"printjson(rs.initiate())\"\n+\t\t\n+\t\t# Add all members except this node as it will be included into the replica set after the above command completes\n+\t\tfor (( n=$(($OFFSET+1)) ; n<$(($INSTANCE_COUNT+$OFFSET)) ; n++)) \n+\t\tdo \n+\t\t\tMEMBER_HOST=\"${NODE_IP_PREFIX}${n}:${MONGODB_PORT}\"\n+\t\t\t\n+\t\t\tlog \"Adding member $MEMBER_HOST to replica set $REPLICA_SET_NAME\" \n+\t\t\tmongo master -u $ADMIN_USER_NAME -p $ADMIN_USER_PASSWORD --host 127.0.0.1 --eval \"printjson(rs.add('${MEMBER_HOST}'))\"\n+\t\tdone\n+\t\t\n+\t\t# Print the current replica set configuration\n+\t\tmongo master -u $ADMIN_USER_NAME -p $ADMIN_USER_PASSWORD --host 127.0.0.1 --eval \"printjson(rs.conf())\"\t\n+\t\tmongo master -u $ADMIN_USER_NAME -p $ADMIN_USER_PASSWORD --host 127.0.0.1 --eval \"printjson(rs.status())\"\t\n+\tfi\n+\t\n+\t# Register an arbiter node with the replica set\n+\tif [ \"$IS_ARBITER\" = true ]; then\n+\t\n+\t\t# Work out the IP address of the last member node where we initiated a replica set\n+\t\tlet \"PRIMARY_MEMBER_INDEX=$INSTANCE_COUNT-1\"\n+\t\tPRIMARY_MEMBER_HOST=\"${NODE_IP_PREFIX}${PRIMARY_MEMBER_INDEX}:${MONGODB_PORT}\"\n+\t\tCURRENT_NODE_IPS=`ifconfig | grep -Eo 'inet (addr:)?([0-9]*\\.){3}[0-9]*' | grep -Eo '([0-9]*\\.){3}[0-9]*' | grep -v '127.0.0.1'`\n+\t\tCURRENT_NODE_IP=${CURRENT_NODE_IPS[@]}\n+\n+\t\tlog \"Adding an arbiter ${HOSTNAME} ($CURRENT_NODE_IP) node to the replica set $REPLICA_SET_NAME\"\n+\t\tmongo master -u $ADMIN_USER_NAME -p $ADMIN_USER_PASSWORD --host $PRIMARY_MEMBER_HOST --eval \"printjson(rs.addArb('${CURRENT_NODE_IP}'))\"\n+\tfi\n+}\n+\n+#############################################################################\n+\n+configure_mongodb()\n+{\n+    log \"Configuring MongoDB\"\n+\n+    # first setup the unit file\n+    log \"Setting up the unit file\"\n+    create_mongodb_unitfile\n+\n+    log \"Executing core configuration\"\n+\tmkdir -p \"$MONGODB_DATA\"\n+\tmkdir \"$MONGODB_DATA/log\"\n+\tmkdir \"$MONGODB_DATA/db\"\n+\t\n+\tchown -R mongodb:mongodb \"$MONGODB_DATA/db\"\n+\tchown -R mongodb:mongodb \"$MONGODB_DATA/log\"\n+\tchmod 755 \"$MONGODB_DATA\"\n+\t\n+\tmkdir /var/run/mongodb\n+\ttouch /var/run/mongodb/mongod.pid\n+\tchmod 777 /var/run/mongodb/mongod.pid\n+\t\n+    # setup the linking jump point\n+    # TEMPORARY WORK AROUND - there is an error seen when mongodb bootstraps directly from the linked blob, it crashes with unknown error\n+    # as an interim work around, we are pointing mongodb to the local file system which has a symlink to the blob\n+    log \"Initiating local jump point at for MongoDB at $MONGODB_DATA_INTERIM_ROOTPATH\"\n+    mkdir -p \"$MONGODB_DATA_INTERIM_ROOTPATH\"\n+    chown -R mongodb:mongodb \"$MONGODB_DATA_INTERIM_ROOTPATH\"\n+\tchmod 755 \"$MONGODB_DATA_INTERIM_ROOTPATH\"\n+\n+    ln -s \"$MONGODB_DATA/log\" \"$MONGODB_DATA_INTERIM_ROOTPATH/log\"\n+    ln -s \"$MONGODB_DATA/db\" \"$MONGODB_DATA_INTERIM_ROOTPATH/db\"\n+\n+\ttee /etc/mongod.conf > /dev/null <<EOF\n+systemLog:\n+    destination: file\n+    path: \"$MONGODB_DATA_INTERIM_ROOTPATH/log/mongod.log\"\n+    quiet: true\n+    logAppend: true\n+processManagement:\n+    fork: true\n+    pidFilePath: \"/var/run/mongodb/mongod.pid\"\n+net:\n+    port: $MONGODB_PORT\n+security:\n+    #keyFile: \"\"\n+    authorization: \"disabled\"\n+storage:\n+    dbPath: \"$MONGODB_DATA_INTERIM_ROOTPATH/db\"\n+    directoryPerDB: true\n+    journal:\n+        enabled: $JOURNAL_ENABLED\n+#replication:\n+    #replSetName: \"$REPLICA_SET_NAME\"\n+EOF\n+\n+\t# Fixing an issue where the mongod will not start after reboot where when /run is tmpfs the /var/run/mongodb directory will be deleted at reboot","path":"templates/stamp/mongodb-ubuntu-install.sh","position":329,"original_position":329,"commit_id":"16e1308a9fe49138d9fcb22984bd4abe340f71e6","original_commit_id":"16e1308a9fe49138d9fcb22984bd4abe340f71e6","user":{"login":"eltoncarr","id":22648027,"avatar_url":"https://avatars.githubusercontent.com/u/22648027?v=3","gravatar_id":"","url":"https://api.github.com/users/eltoncarr","html_url":"https://github.com/eltoncarr","followers_url":"https://api.github.com/users/eltoncarr/followers","following_url":"https://api.github.com/users/eltoncarr/following{/other_user}","gists_url":"https://api.github.com/users/eltoncarr/gists{/gist_id}","starred_url":"https://api.github.com/users/eltoncarr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eltoncarr/subscriptions","organizations_url":"https://api.github.com/users/eltoncarr/orgs","repos_url":"https://api.github.com/users/eltoncarr/repos","events_url":"https://api.github.com/users/eltoncarr/events{/privacy}","received_events_url":"https://api.github.com/users/eltoncarr/received_events","type":"User","site_admin":false},"body":"I guess the same applies to mysql vs mysqld","created_at":"2016-10-17T01:00:20Z","updated_at":"2016-10-17T01:00:20Z","html_url":"https://github.com/Microsoft/oxa-tools/pull/5#discussion_r83565749","pull_request_url":"https://api.github.com/repos/Microsoft/oxa-tools/pulls/5","_links":{"self":{"href":"https://api.github.com/repos/Microsoft/oxa-tools/pulls/comments/83565749"},"html":{"href":"https://github.com/Microsoft/oxa-tools/pull/5#discussion_r83565749"},"pull_request":{"href":"https://api.github.com/repos/Microsoft/oxa-tools/pulls/5"}}},"pull_request":{"url":"https://api.github.com/repos/Microsoft/oxa-tools/pulls/5","id":89264376,"html_url":"https://github.com/Microsoft/oxa-tools/pull/5","diff_url":"https://github.com/Microsoft/oxa-tools/pull/5.diff","patch_url":"https://github.com/Microsoft/oxa-tools/pull/5.patch","issue_url":"https://api.github.com/repos/Microsoft/oxa-tools/issues/5","number":5,"state":"open","locked":false,"title":"Bootstrapping OXA Stamp","user":{"login":"eltoncarr","id":22648027,"avatar_url":"https://avatars.githubusercontent.com/u/22648027?v=3","gravatar_id":"","url":"https://api.github.com/users/eltoncarr","html_url":"https://github.com/eltoncarr","followers_url":"https://api.github.com/users/eltoncarr/followers","following_url":"https://api.github.com/users/eltoncarr/following{/other_user}","gists_url":"https://api.github.com/users/eltoncarr/gists{/gist_id}","starred_url":"https://api.github.com/users/eltoncarr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eltoncarr/subscriptions","organizations_url":"https://api.github.com/users/eltoncarr/orgs","repos_url":"https://api.github.com/users/eltoncarr/repos","events_url":"https://api.github.com/users/eltoncarr/events{/privacy}","received_events_url":"https://api.github.com/users/eltoncarr/received_events","type":"User","site_admin":false},"body":"Adding initial bootstrap of the **OXA Stamp**:\r\n\r\nThis change includes :\r\n1. Arm template for setting up the OXA stamp\r\n2. Setup scripts installing and configuring mongo and mysql databases with replication\r\n3. Configuration file for mysql\r\n\r\nThis covers the bare metal infrastructure of the OXA stamp. There may be need for a number of refactoring for monitoring, disgnostics, and clean up of parameters but this change is intended to unblock dependent work items. ","created_at":"2016-10-13T19:16:42Z","updated_at":"2016-10-17T01:00:20Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8d7844451a38acef14e54ae18abf03ac10f2cd1a","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/Microsoft/oxa-tools/pulls/5/commits","review_comments_url":"https://api.github.com/repos/Microsoft/oxa-tools/pulls/5/comments","review_comment_url":"https://api.github.com/repos/Microsoft/oxa-tools/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Microsoft/oxa-tools/issues/5/comments","statuses_url":"https://api.github.com/repos/Microsoft/oxa-tools/statuses/16e1308a9fe49138d9fcb22984bd4abe340f71e6","head":{"label":"Microsoft:eltonc","ref":"eltonc","sha":"16e1308a9fe49138d9fcb22984bd4abe340f71e6","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":68036989,"name":"oxa-tools","full_name":"Microsoft/oxa-tools","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/oxa-tools","description":"Open edX on Azure Tools","fork":false,"url":"https://api.github.com/repos/Microsoft/oxa-tools","forks_url":"https://api.github.com/repos/Microsoft/oxa-tools/forks","keys_url":"https://api.github.com/repos/Microsoft/oxa-tools/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/oxa-tools/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/oxa-tools/teams","hooks_url":"https://api.github.com/repos/Microsoft/oxa-tools/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/oxa-tools/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/oxa-tools/events","assignees_url":"https://api.github.com/repos/Microsoft/oxa-tools/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/oxa-tools/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/oxa-tools/tags","blobs_url":"https://api.github.com/repos/Microsoft/oxa-tools/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/oxa-tools/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/oxa-tools/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/oxa-tools/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/oxa-tools/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/oxa-tools/languages","stargazers_url":"https://api.github.com/repos/Microsoft/oxa-tools/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/oxa-tools/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/oxa-tools/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/oxa-tools/subscription","commits_url":"https://api.github.com/repos/Microsoft/oxa-tools/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/oxa-tools/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/oxa-tools/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/oxa-tools/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/oxa-tools/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/oxa-tools/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/oxa-tools/merges","archive_url":"https://api.github.com/repos/Microsoft/oxa-tools/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/oxa-tools/downloads","issues_url":"https://api.github.com/repos/Microsoft/oxa-tools/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/oxa-tools/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/oxa-tools/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/oxa-tools/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/oxa-tools/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/oxa-tools/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/oxa-tools/deployments","created_at":"2016-09-12T18:40:43Z","updated_at":"2016-10-14T05:20:34Z","pushed_at":"2016-10-14T22:37:25Z","git_url":"git://github.com/Microsoft/oxa-tools.git","ssh_url":"git@github.com:Microsoft/oxa-tools.git","clone_url":"https://github.com/Microsoft/oxa-tools.git","svn_url":"https://github.com/Microsoft/oxa-tools","homepage":null,"size":65,"stargazers_count":1,"watchers_count":1,"language":"Shell","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":2,"forks":1,"open_issues":2,"watchers":1,"default_branch":"master"}},"base":{"label":"Microsoft:master","ref":"master","sha":"edd3d0f1d975b64d92734827a83cbd153a00e9c0","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":68036989,"name":"oxa-tools","full_name":"Microsoft/oxa-tools","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/oxa-tools","description":"Open edX on Azure Tools","fork":false,"url":"https://api.github.com/repos/Microsoft/oxa-tools","forks_url":"https://api.github.com/repos/Microsoft/oxa-tools/forks","keys_url":"https://api.github.com/repos/Microsoft/oxa-tools/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/oxa-tools/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/oxa-tools/teams","hooks_url":"https://api.github.com/repos/Microsoft/oxa-tools/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/oxa-tools/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/oxa-tools/events","assignees_url":"https://api.github.com/repos/Microsoft/oxa-tools/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/oxa-tools/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/oxa-tools/tags","blobs_url":"https://api.github.com/repos/Microsoft/oxa-tools/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/oxa-tools/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/oxa-tools/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/oxa-tools/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/oxa-tools/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/oxa-tools/languages","stargazers_url":"https://api.github.com/repos/Microsoft/oxa-tools/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/oxa-tools/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/oxa-tools/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/oxa-tools/subscription","commits_url":"https://api.github.com/repos/Microsoft/oxa-tools/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/oxa-tools/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/oxa-tools/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/oxa-tools/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/oxa-tools/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/oxa-tools/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/oxa-tools/merges","archive_url":"https://api.github.com/repos/Microsoft/oxa-tools/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/oxa-tools/downloads","issues_url":"https://api.github.com/repos/Microsoft/oxa-tools/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/oxa-tools/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/oxa-tools/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/oxa-tools/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/oxa-tools/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/oxa-tools/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/oxa-tools/deployments","created_at":"2016-09-12T18:40:43Z","updated_at":"2016-10-14T05:20:34Z","pushed_at":"2016-10-14T22:37:25Z","git_url":"git://github.com/Microsoft/oxa-tools.git","ssh_url":"git@github.com:Microsoft/oxa-tools.git","clone_url":"https://github.com/Microsoft/oxa-tools.git","svn_url":"https://github.com/Microsoft/oxa-tools","homepage":null,"size":65,"stargazers_count":1,"watchers_count":1,"language":"Shell","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":2,"forks":1,"open_issues":2,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Microsoft/oxa-tools/pulls/5"},"html":{"href":"https://github.com/Microsoft/oxa-tools/pull/5"},"issue":{"href":"https://api.github.com/repos/Microsoft/oxa-tools/issues/5"},"comments":{"href":"https://api.github.com/repos/Microsoft/oxa-tools/issues/5/comments"},"review_comments":{"href":"https://api.github.com/repos/Microsoft/oxa-tools/pulls/5/comments"},"review_comment":{"href":"https://api.github.com/repos/Microsoft/oxa-tools/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Microsoft/oxa-tools/pulls/5/commits"},"statuses":{"href":"https://api.github.com/repos/Microsoft/oxa-tools/statuses/16e1308a9fe49138d9fcb22984bd4abe340f71e6"}}}}
{"actor":{"display_login":"eltoncarr"}}