{"action":"created","comment":{"url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/pulls/comments/174731176","pull_request_review_id":104138917,"id":174731176,"diff_hunk":"@@ -0,0 +1,111 @@\n+---\n+title: \"Tema - Configurarea mașinilor virtuale\"\n+permalink: /laboratoare/open-source/teme/tema-extra-1\n+group: \"laboratoare.opensource\"\n+layout: post\n+color: blue\n+icon: fas fa-laptop\n+highlight: true\n+author: \"Alexandru Coman\"\n+date: 2018-03-14 12:00:00\n+---\n+\n+## Consultarea resurselor\n+\n+Pentru rezolvarea acestei teme aveți la dispoziție următoarele tutoriale:\n+- [Gestiunea utilizatorilor][0]\n+- [Managementul discurilor][1]\n+- [Managementul pachetelor][2]\n+- [Gestiunea proceselor][3]\n+- [Noțiuni introductive de rețelistică][4]\n+- [Instalarea sistemului de operare CentOS 7][5]\n+- [Noțiuni introductive în Bash][6]\n+- [git - noțiuni introductive][7]\n+\n+## Resurse necesare\n+\n+Pentru a începe lucrul la temă o să aveți nevoie de următoarele resurse:\n+ - utilitarul [git][8] și un cont pe [GitHub] (puteți opta pentru beneficiile pentru [studenți][9])\n+    - În cazul în care întâmpinați probleme puteți consulta următorul articol [git - noțiuni introductive][7]\n+ - un depozit de cod pentru tema curentă (pentru modul de lucru cu git vă puteți inspira din tutorialul [git - propunerea unei soluții][10])\n+\n+## Exerciții\n+\n+### Fișiere de configurare\n+\n+În cadrul depozitului de cod va trebui să pregătiți o serie de fișiere de configurare (într-un format la liberă alegere) care să descrie modificările ce trebuie făcute pentru fiecare mașină virtuală (identificate unic după hostname).\n+\n+Minimalist se va descrie:\n+\n+- resursele hardware ale mașinii virtuale (CPU, memorie, discuri etc)\n+- interfețe de rețea -- pentru fiecare interfață se va preciza tipul și opțional setările ce trebuiesc făcute (de exemplu: adresa IP, adresa MAC, gateway, servere de DNS etc)\n+- dacă se dorește actualizarea sistemului de operare\n+- aplicații ce trebuie instalate\n+\n+### Imagine de bază pentru mașinile virtuale\n+\n+Pregătiți o mașină virtuală ce va avea ca sistem de operare CentOS urmând pașii descriși în cadrul tutorialului [Instalarea sistemului de operare CentOS 7][5].\n+\n+Pe lângă sistemul de operare instalat în cadrul acestei mașini virtuale va trebui să adăugați un serviciu care va rula o singură dată, următoarea dată când mașina virtuală va fi pornită.\n+Serviciul adăugat va trebui să îndeplinească următorii pași:\n+ - să verifice dacă fișierul de configurare (aflat la o locație prestabilită în cadrul sistemului de fișiere) este accesibil -- eventual se poate asigura că locația respectivă devine accesibilă\n+ - să citească dintr-un fișier de configurare toate informațiile de care are nevoie pentru a configura sistemul\n+ - va seta hostname-ul pentru mașina virtuală\n+ - va configura interfața de rețea ce ne permite acces la resurse externe\n+ - va instala utilitarul git și va clona depozitul de cod pregătit pentru tema curentă\n+ - va lansa în execuție script-ul *boostrap.sh* aflat în depozitul de cod anterior menționat \n+\n+### Bootstrap.sh\n+\n+Pe baza soluției propuse pentru prima temă acasă și pe baza rezolvărilor propuse în cadrul laboratoarelor va trebui să dezvoltați un script bash care se va ocupa de setările inițiale ale sistemului de operare. Script-ul va obține toate informațiile necesare dintr-un fișier de configurare disponibil în cadrul depozitului de cod în care este inclus.\n+\n+Minimal scriptul va efectua următoarele acțiuni:\n+\n+- va efectua actualizări pentru programele de sistem existente\n+- va configura toate interfețele de rețea disponibilie\n+- va configura procesul de SSH astfel încât autentificarea pe bază de parolă nu va mai putea fi efectuată, în schimb, veți putea folosi chei de tip RSA, pe care o veți și instala\n+- va reține datele de ieșire și mesajele de eroare în fișierul /var/log/system-bootstrap.log\n+- inspectează fișierul /etc/selinux/config și se asigură că parametrul ”SELINUX=” este ”disabled” după care va lansa comanda “setenforce 0”\n+\n+### VirtualBox Manager\n+\n+Dezvoltați o aplicație care se va ocupa de gestiunea mașinilor virtuale folosite în cadrul laboratoarelor de *Metodologii de lucru în mediul Open-Source*. Aceasta va trebuie să se folosească de [API-ul expus] de hypervisor-ul [VirtualBox] sau de utilitarul în linie de comandă [VBoxManage].\n+\n+Aplicația va oferi următoarele funcționalități utilizatorului:\n+\n+ - `script deploy {hostname}` -- va pregăti o nouă mașină virtuală pe baza mașinii virtuale de bază pregătită anterior\n+    - va verifica dacă există un fișier de configurare pentru această mașină virtuală (dacă nu există un fișier de configurare specific va folosi un fișier de configurare prestabilit)\n+    - va face o clonă a imaginii de bază\n+    - va efectua modifările descrise în cadrul fișierului de configurare (RAM, CPU, discuri, interfețe de rețea etc)\n+    - va pregăti fișierul de configurare pentru SystemD unit file și îl va adăuga în mașina virtuală (fie utilizând *shared folder*, fie folosind unitatea optică)\n+\n+ - `script halt {hostname}` -- va pune mașina virtuală într-o stare suspendată\n+ - `script start {hostname}` -- va restaura starea anterioară a mașinii virtuale (dacă aceasta era într-o stare suspendată)\n+ - `script destroy {hostname}` -- va distruge mașina virtuală\n+\n+## Informații utile\n+\n+Barem:\n+- un punct din oficiu\n+- imaginea de bază pentru mașinile virtuale: **1 punct**\n+- SystemD unit file: **2 punct**\n+- boostrap.sh: **3 puncte**","path":"laboratoare/open-source/teme/tema-extra-1.markdown","position":null,"original_position":92,"commit_id":"19558d8a0e40d43f15f3e72d723c3285281b333d","original_commit_id":"873101b894523f4faa1e8c438310194bc7df73a1","user":{"login":"alexcoman","id":5760107,"avatar_url":"https://avatars2.githubusercontent.com/u/5760107?v=4","gravatar_id":"","url":"https://api.github.com/users/alexcoman","html_url":"https://github.com/alexcoman","followers_url":"https://api.github.com/users/alexcoman/followers","following_url":"https://api.github.com/users/alexcoman/following{/other_user}","gists_url":"https://api.github.com/users/alexcoman/gists{/gist_id}","starred_url":"https://api.github.com/users/alexcoman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexcoman/subscriptions","organizations_url":"https://api.github.com/users/alexcoman/orgs","repos_url":"https://api.github.com/users/alexcoman/repos","events_url":"https://api.github.com/users/alexcoman/events{/privacy}","received_events_url":"https://api.github.com/users/alexcoman/received_events","type":"User","site_admin":false},"body":"Done.","created_at":"2018-03-15T10:08:44Z","updated_at":"2018-03-15T10:08:44Z","html_url":"https://github.com/tss-yonder/courses.tss-yonder.com/pull/36#discussion_r174731176","pull_request_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/pulls/36","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/pulls/comments/174731176"},"html":{"href":"https://github.com/tss-yonder/courses.tss-yonder.com/pull/36#discussion_r174731176"},"pull_request":{"href":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/pulls/36"}},"in_reply_to_id":174705888},"pull_request":{"url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/pulls/36","id":174883729,"html_url":"https://github.com/tss-yonder/courses.tss-yonder.com/pull/36","diff_url":"https://github.com/tss-yonder/courses.tss-yonder.com/pull/36.diff","patch_url":"https://github.com/tss-yonder/courses.tss-yonder.com/pull/36.patch","issue_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/issues/36","number":36,"state":"open","locked":false,"title":"Add the second homework for MLMOS","user":{"login":"alexcoman","id":5760107,"avatar_url":"https://avatars2.githubusercontent.com/u/5760107?v=4","gravatar_id":"","url":"https://api.github.com/users/alexcoman","html_url":"https://github.com/alexcoman","followers_url":"https://api.github.com/users/alexcoman/followers","following_url":"https://api.github.com/users/alexcoman/following{/other_user}","gists_url":"https://api.github.com/users/alexcoman/gists{/gist_id}","starred_url":"https://api.github.com/users/alexcoman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexcoman/subscriptions","organizations_url":"https://api.github.com/users/alexcoman/orgs","repos_url":"https://api.github.com/users/alexcoman/repos","events_url":"https://api.github.com/users/alexcoman/events{/privacy}","received_events_url":"https://api.github.com/users/alexcoman/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-03-14T08:32:14Z","updated_at":"2018-03-15T10:08:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"815a416a2166e61beec28c0eccff0ee7b57aec1d","assignee":{"login":"gpaiu","id":6840525,"avatar_url":"https://avatars0.githubusercontent.com/u/6840525?v=4","gravatar_id":"","url":"https://api.github.com/users/gpaiu","html_url":"https://github.com/gpaiu","followers_url":"https://api.github.com/users/gpaiu/followers","following_url":"https://api.github.com/users/gpaiu/following{/other_user}","gists_url":"https://api.github.com/users/gpaiu/gists{/gist_id}","starred_url":"https://api.github.com/users/gpaiu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gpaiu/subscriptions","organizations_url":"https://api.github.com/users/gpaiu/orgs","repos_url":"https://api.github.com/users/gpaiu/repos","events_url":"https://api.github.com/users/gpaiu/events{/privacy}","received_events_url":"https://api.github.com/users/gpaiu/received_events","type":"User","site_admin":false},"assignees":[{"login":"gpaiu","id":6840525,"avatar_url":"https://avatars0.githubusercontent.com/u/6840525?v=4","gravatar_id":"","url":"https://api.github.com/users/gpaiu","html_url":"https://github.com/gpaiu","followers_url":"https://api.github.com/users/gpaiu/followers","following_url":"https://api.github.com/users/gpaiu/following{/other_user}","gists_url":"https://api.github.com/users/gpaiu/gists{/gist_id}","starred_url":"https://api.github.com/users/gpaiu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gpaiu/subscriptions","organizations_url":"https://api.github.com/users/gpaiu/orgs","repos_url":"https://api.github.com/users/gpaiu/repos","events_url":"https://api.github.com/users/gpaiu/events{/privacy}","received_events_url":"https://api.github.com/users/gpaiu/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":653836972,"url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"milestone":null,"commits_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/pulls/36/commits","review_comments_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/pulls/36/comments","review_comment_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/pulls/comments{/number}","comments_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/issues/36/comments","statuses_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/statuses/19558d8a0e40d43f15f3e72d723c3285281b333d","head":{"label":"tss-yonder:homework","ref":"homework","sha":"19558d8a0e40d43f15f3e72d723c3285281b333d","user":{"login":"tss-yonder","id":11517912,"avatar_url":"https://avatars3.githubusercontent.com/u/11517912?v=4","gravatar_id":"","url":"https://api.github.com/users/tss-yonder","html_url":"https://github.com/tss-yonder","followers_url":"https://api.github.com/users/tss-yonder/followers","following_url":"https://api.github.com/users/tss-yonder/following{/other_user}","gists_url":"https://api.github.com/users/tss-yonder/gists{/gist_id}","starred_url":"https://api.github.com/users/tss-yonder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tss-yonder/subscriptions","organizations_url":"https://api.github.com/users/tss-yonder/orgs","repos_url":"https://api.github.com/users/tss-yonder/repos","events_url":"https://api.github.com/users/tss-yonder/events{/privacy}","received_events_url":"https://api.github.com/users/tss-yonder/received_events","type":"Organization","site_admin":false},"repo":{"id":98198214,"name":"courses.tss-yonder.com","full_name":"tss-yonder/courses.tss-yonder.com","owner":{"login":"tss-yonder","id":11517912,"avatar_url":"https://avatars3.githubusercontent.com/u/11517912?v=4","gravatar_id":"","url":"https://api.github.com/users/tss-yonder","html_url":"https://github.com/tss-yonder","followers_url":"https://api.github.com/users/tss-yonder/followers","following_url":"https://api.github.com/users/tss-yonder/following{/other_user}","gists_url":"https://api.github.com/users/tss-yonder/gists{/gist_id}","starred_url":"https://api.github.com/users/tss-yonder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tss-yonder/subscriptions","organizations_url":"https://api.github.com/users/tss-yonder/orgs","repos_url":"https://api.github.com/users/tss-yonder/repos","events_url":"https://api.github.com/users/tss-yonder/events{/privacy}","received_events_url":"https://api.github.com/users/tss-yonder/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/tss-yonder/courses.tss-yonder.com","description":null,"fork":false,"url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com","forks_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/forks","keys_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/teams","hooks_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/hooks","issue_events_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/issues/events{/number}","events_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/events","assignees_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/assignees{/user}","branches_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/branches{/branch}","tags_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/tags","blobs_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/git/refs{/sha}","trees_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/statuses/{sha}","languages_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/languages","stargazers_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/stargazers","contributors_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/contributors","subscribers_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/subscribers","subscription_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/subscription","commits_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/commits{/sha}","git_commits_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/git/commits{/sha}","comments_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/comments{/number}","issue_comment_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/issues/comments{/number}","contents_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/contents/{+path}","compare_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/merges","archive_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/downloads","issues_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/issues{/number}","pulls_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/pulls{/number}","milestones_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/milestones{/number}","notifications_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/labels{/name}","releases_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/releases{/id}","deployments_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/deployments","created_at":"2017-07-24T14:12:13Z","updated_at":"2018-03-15T08:34:59Z","pushed_at":"2018-03-15T10:08:30Z","git_url":"git://github.com/tss-yonder/courses.tss-yonder.com.git","ssh_url":"git@github.com:tss-yonder/courses.tss-yonder.com.git","clone_url":"https://github.com/tss-yonder/courses.tss-yonder.com.git","svn_url":"https://github.com/tss-yonder/courses.tss-yonder.com","homepage":null,"size":18138,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":1,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"tss-yonder:master","ref":"master","sha":"a4d2c7b000217ce1fe032e2403b24640c3888435","user":{"login":"tss-yonder","id":11517912,"avatar_url":"https://avatars3.githubusercontent.com/u/11517912?v=4","gravatar_id":"","url":"https://api.github.com/users/tss-yonder","html_url":"https://github.com/tss-yonder","followers_url":"https://api.github.com/users/tss-yonder/followers","following_url":"https://api.github.com/users/tss-yonder/following{/other_user}","gists_url":"https://api.github.com/users/tss-yonder/gists{/gist_id}","starred_url":"https://api.github.com/users/tss-yonder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tss-yonder/subscriptions","organizations_url":"https://api.github.com/users/tss-yonder/orgs","repos_url":"https://api.github.com/users/tss-yonder/repos","events_url":"https://api.github.com/users/tss-yonder/events{/privacy}","received_events_url":"https://api.github.com/users/tss-yonder/received_events","type":"Organization","site_admin":false},"repo":{"id":98198214,"name":"courses.tss-yonder.com","full_name":"tss-yonder/courses.tss-yonder.com","owner":{"login":"tss-yonder","id":11517912,"avatar_url":"https://avatars3.githubusercontent.com/u/11517912?v=4","gravatar_id":"","url":"https://api.github.com/users/tss-yonder","html_url":"https://github.com/tss-yonder","followers_url":"https://api.github.com/users/tss-yonder/followers","following_url":"https://api.github.com/users/tss-yonder/following{/other_user}","gists_url":"https://api.github.com/users/tss-yonder/gists{/gist_id}","starred_url":"https://api.github.com/users/tss-yonder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tss-yonder/subscriptions","organizations_url":"https://api.github.com/users/tss-yonder/orgs","repos_url":"https://api.github.com/users/tss-yonder/repos","events_url":"https://api.github.com/users/tss-yonder/events{/privacy}","received_events_url":"https://api.github.com/users/tss-yonder/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/tss-yonder/courses.tss-yonder.com","description":null,"fork":false,"url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com","forks_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/forks","keys_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/teams","hooks_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/hooks","issue_events_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/issues/events{/number}","events_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/events","assignees_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/assignees{/user}","branches_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/branches{/branch}","tags_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/tags","blobs_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/git/refs{/sha}","trees_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/statuses/{sha}","languages_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/languages","stargazers_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/stargazers","contributors_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/contributors","subscribers_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/subscribers","subscription_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/subscription","commits_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/commits{/sha}","git_commits_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/git/commits{/sha}","comments_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/comments{/number}","issue_comment_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/issues/comments{/number}","contents_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/contents/{+path}","compare_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/merges","archive_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/downloads","issues_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/issues{/number}","pulls_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/pulls{/number}","milestones_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/milestones{/number}","notifications_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/labels{/name}","releases_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/releases{/id}","deployments_url":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/deployments","created_at":"2017-07-24T14:12:13Z","updated_at":"2018-03-15T08:34:59Z","pushed_at":"2018-03-15T10:08:30Z","git_url":"git://github.com/tss-yonder/courses.tss-yonder.com.git","ssh_url":"git@github.com:tss-yonder/courses.tss-yonder.com.git","clone_url":"https://github.com/tss-yonder/courses.tss-yonder.com.git","svn_url":"https://github.com/tss-yonder/courses.tss-yonder.com","homepage":null,"size":18138,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":1,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/pulls/36"},"html":{"href":"https://github.com/tss-yonder/courses.tss-yonder.com/pull/36"},"issue":{"href":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/issues/36"},"comments":{"href":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/issues/36/comments"},"review_comments":{"href":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/pulls/36/comments"},"review_comment":{"href":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/pulls/36/commits"},"statuses":{"href":"https://api.github.com/repos/tss-yonder/courses.tss-yonder.com/statuses/19558d8a0e40d43f15f3e72d723c3285281b333d"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"alexcoman"}}