{"action":"created","comment":{"url":"https://api.github.com/repos/CCI-MOC/haas/pulls/comments/54136232","id":54136232,"diff_hunk":"@@ -371,6 +268,49 @@ def get_port_networks(self, ports):\n         and have ``session`` just return ``self``.\n         \"\"\"\n \n+class Obm(AnonModel):\n+    \"\"\"Obm superclass supporting various drivers \n+\n+    related to out of band management of servers.\n+    \"\"\"\n+    type = Column(String, nullable=False)\n+\n+    __mapper_args__ = {\n+            'polymorphic_on': type\n+            }\n+    @staticmethod\n+    def validate(kwargs):\n+        \"\"\"Verify that ``kwargs`` is a legal set of keywords args to ``__init__``\n+\n+        Raise a ``schema.SchemaError`` if the  ``kwargs`` is invalid. \n+        Note well: This is a *static* method; it will be invoked on the class.\n+        \"\"\"     \n+        assert False, \"Subclasses MUST override the validate method \"\n+\n+    def power_cycle(self):\n+        \"\"\"Power cycles the node.\n+\n+        Exact implementation to left to the subclasses.\n+        \"\"\"     \n+        assert False, \"Subclasses MUST override the power_cycle method \"\n+\n+    def start_console(self):\n+        \"\"\"Starts logging to the console. \"\"\"\n+        assert False, \"Subclasses MUST override the start_console method\" \n+\n+    def stop_console(self):\n+        \"\"\"Stops console logging. \"\"\"\n+        assert False, \"Subclasses MUST override the stop_console method\"\n+\n+    def delete_console(self):\n+        assert False, \"Subclasses MUST override the delete_console method\"\n+\n+    def get_console(self):\n+        assert False, \"Subclasses MUST override the get_console method\"\n+\n+    def get_console_log_filename(self):\n+        assert False, \"Subclasses MUST override this method\"","path":"haas/model.py","position":173,"original_position":166,"commit_id":"fc1e36356e8de3edabd484d17c9efad7da30aa1c","original_commit_id":"0118c214feb0cde42b6432a0df916291ad8a10e7","user":{"login":"SahilTikale","id":2398718,"avatar_url":"https://avatars.githubusercontent.com/u/2398718?v=3","gravatar_id":"","url":"https://api.github.com/users/SahilTikale","html_url":"https://github.com/SahilTikale","followers_url":"https://api.github.com/users/SahilTikale/followers","following_url":"https://api.github.com/users/SahilTikale/following{/other_user}","gists_url":"https://api.github.com/users/SahilTikale/gists{/gist_id}","starred_url":"https://api.github.com/users/SahilTikale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SahilTikale/subscriptions","organizations_url":"https://api.github.com/users/SahilTikale/orgs","repos_url":"https://api.github.com/users/SahilTikale/repos","events_url":"https://api.github.com/users/SahilTikale/events{/privacy}","received_events_url":"https://api.github.com/users/SahilTikale/received_events","type":"User","site_admin":false},"body":"which method name you want me to include.\r\nI assume it was the power_off method and I included it.\r\nIt is there (lines 295 - 299 in model.py). \r\nIs there anything else I should be including ?","created_at":"2016-02-25T18:00:19Z","updated_at":"2016-02-25T18:00:19Z","html_url":"https://github.com/CCI-MOC/haas/pull/526#discussion_r54136232","pull_request_url":"https://api.github.com/repos/CCI-MOC/haas/pulls/526","_links":{"self":{"href":"https://api.github.com/repos/CCI-MOC/haas/pulls/comments/54136232"},"html":{"href":"https://github.com/CCI-MOC/haas/pull/526#discussion_r54136232"},"pull_request":{"href":"https://api.github.com/repos/CCI-MOC/haas/pulls/526"}}},"pull_request":{"url":"https://api.github.com/repos/CCI-MOC/haas/pulls/526","id":58556294,"html_url":"https://github.com/CCI-MOC/haas/pull/526","diff_url":"https://github.com/CCI-MOC/haas/pull/526.diff","patch_url":"https://github.com/CCI-MOC/haas/pull/526.patch","issue_url":"https://api.github.com/repos/CCI-MOC/haas/issues/526","number":526,"state":"open","locked":false,"title":"Ipmi driver","user":{"login":"SahilTikale","id":2398718,"avatar_url":"https://avatars.githubusercontent.com/u/2398718?v=3","gravatar_id":"","url":"https://api.github.com/users/SahilTikale","html_url":"https://github.com/SahilTikale","followers_url":"https://api.github.com/users/SahilTikale/followers","following_url":"https://api.github.com/users/SahilTikale/following{/other_user}","gists_url":"https://api.github.com/users/SahilTikale/gists{/gist_id}","starred_url":"https://api.github.com/users/SahilTikale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SahilTikale/subscriptions","organizations_url":"https://api.github.com/users/SahilTikale/orgs","repos_url":"https://api.github.com/users/SahilTikale/repos","events_url":"https://api.github.com/users/SahilTikale/events{/privacy}","received_events_url":"https://api.github.com/users/SahilTikale/received_events","type":"User","site_admin":false},"body":"Following pull request follows the drivertization approach adopted for HaaS design and implements IPMI support in the form of a pluggable driver.\r\n\r\nAn older pull request #484 was a similar patch but in context of older haas code. A lot has changed since then, hence I made this new pull request. Once this is merged upstream #484 should be closed.\r\n\r\nThis patch consists of\r\n\r\n1. Changes to model.py to accomodate a superclass Obm \r\n2. A new folder obm and the driver code is under this folder named ipmi.py\r\n3. Changes to api.py as this patch changes how call node_register works. All other calls are not affected\r\n4. Changes to cli,py for node_register. \r\n5. Fixed relevant changes for unit tests for api,py. \r\n        Previously api.py reported 59 failed tests. \r\n        58 of which gets fixed with this patch. \r\n\r\n","created_at":"2016-02-07T20:32:53Z","updated_at":"2016-02-25T18:00:19Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9bbe4fb8403da6379f00cf6fd18076c6f0d91aba","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/CCI-MOC/haas/pulls/526/commits","review_comments_url":"https://api.github.com/repos/CCI-MOC/haas/pulls/526/comments","review_comment_url":"https://api.github.com/repos/CCI-MOC/haas/pulls/comments{/number}","comments_url":"https://api.github.com/repos/CCI-MOC/haas/issues/526/comments","statuses_url":"https://api.github.com/repos/CCI-MOC/haas/statuses/fc1e36356e8de3edabd484d17c9efad7da30aa1c","head":{"label":"SahilTikale:ipmi-driver","ref":"ipmi-driver","sha":"fc1e36356e8de3edabd484d17c9efad7da30aa1c","user":{"login":"SahilTikale","id":2398718,"avatar_url":"https://avatars.githubusercontent.com/u/2398718?v=3","gravatar_id":"","url":"https://api.github.com/users/SahilTikale","html_url":"https://github.com/SahilTikale","followers_url":"https://api.github.com/users/SahilTikale/followers","following_url":"https://api.github.com/users/SahilTikale/following{/other_user}","gists_url":"https://api.github.com/users/SahilTikale/gists{/gist_id}","starred_url":"https://api.github.com/users/SahilTikale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SahilTikale/subscriptions","organizations_url":"https://api.github.com/users/SahilTikale/orgs","repos_url":"https://api.github.com/users/SahilTikale/repos","events_url":"https://api.github.com/users/SahilTikale/events{/privacy}","received_events_url":"https://api.github.com/users/SahilTikale/received_events","type":"User","site_admin":false},"repo":{"id":35552937,"name":"haas","full_name":"SahilTikale/haas","owner":{"login":"SahilTikale","id":2398718,"avatar_url":"https://avatars.githubusercontent.com/u/2398718?v=3","gravatar_id":"","url":"https://api.github.com/users/SahilTikale","html_url":"https://github.com/SahilTikale","followers_url":"https://api.github.com/users/SahilTikale/followers","following_url":"https://api.github.com/users/SahilTikale/following{/other_user}","gists_url":"https://api.github.com/users/SahilTikale/gists{/gist_id}","starred_url":"https://api.github.com/users/SahilTikale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SahilTikale/subscriptions","organizations_url":"https://api.github.com/users/SahilTikale/orgs","repos_url":"https://api.github.com/users/SahilTikale/repos","events_url":"https://api.github.com/users/SahilTikale/events{/privacy}","received_events_url":"https://api.github.com/users/SahilTikale/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/SahilTikale/haas","description":"","fork":true,"url":"https://api.github.com/repos/SahilTikale/haas","forks_url":"https://api.github.com/repos/SahilTikale/haas/forks","keys_url":"https://api.github.com/repos/SahilTikale/haas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SahilTikale/haas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SahilTikale/haas/teams","hooks_url":"https://api.github.com/repos/SahilTikale/haas/hooks","issue_events_url":"https://api.github.com/repos/SahilTikale/haas/issues/events{/number}","events_url":"https://api.github.com/repos/SahilTikale/haas/events","assignees_url":"https://api.github.com/repos/SahilTikale/haas/assignees{/user}","branches_url":"https://api.github.com/repos/SahilTikale/haas/branches{/branch}","tags_url":"https://api.github.com/repos/SahilTikale/haas/tags","blobs_url":"https://api.github.com/repos/SahilTikale/haas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SahilTikale/haas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SahilTikale/haas/git/refs{/sha}","trees_url":"https://api.github.com/repos/SahilTikale/haas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SahilTikale/haas/statuses/{sha}","languages_url":"https://api.github.com/repos/SahilTikale/haas/languages","stargazers_url":"https://api.github.com/repos/SahilTikale/haas/stargazers","contributors_url":"https://api.github.com/repos/SahilTikale/haas/contributors","subscribers_url":"https://api.github.com/repos/SahilTikale/haas/subscribers","subscription_url":"https://api.github.com/repos/SahilTikale/haas/subscription","commits_url":"https://api.github.com/repos/SahilTikale/haas/commits{/sha}","git_commits_url":"https://api.github.com/repos/SahilTikale/haas/git/commits{/sha}","comments_url":"https://api.github.com/repos/SahilTikale/haas/comments{/number}","issue_comment_url":"https://api.github.com/repos/SahilTikale/haas/issues/comments{/number}","contents_url":"https://api.github.com/repos/SahilTikale/haas/contents/{+path}","compare_url":"https://api.github.com/repos/SahilTikale/haas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SahilTikale/haas/merges","archive_url":"https://api.github.com/repos/SahilTikale/haas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SahilTikale/haas/downloads","issues_url":"https://api.github.com/repos/SahilTikale/haas/issues{/number}","pulls_url":"https://api.github.com/repos/SahilTikale/haas/pulls{/number}","milestones_url":"https://api.github.com/repos/SahilTikale/haas/milestones{/number}","notifications_url":"https://api.github.com/repos/SahilTikale/haas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SahilTikale/haas/labels{/name}","releases_url":"https://api.github.com/repos/SahilTikale/haas/releases{/id}","deployments_url":"https://api.github.com/repos/SahilTikale/haas/deployments","created_at":"2015-05-13T14:11:46Z","updated_at":"2016-02-01T04:21:37Z","pushed_at":"2016-02-25T06:24:27Z","git_url":"git://github.com/SahilTikale/haas.git","ssh_url":"git@github.com:SahilTikale/haas.git","clone_url":"https://github.com/SahilTikale/haas.git","svn_url":"https://github.com/SahilTikale/haas","homepage":null,"size":1537,"stargazers_count":0,"watchers_count":0,"language":"Python","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":"CCI-MOC:master","ref":"master","sha":"a84093877946fea6b128567d0f134946a0860517","user":{"login":"CCI-MOC","id":3578683,"avatar_url":"https://avatars.githubusercontent.com/u/3578683?v=3","gravatar_id":"","url":"https://api.github.com/users/CCI-MOC","html_url":"https://github.com/CCI-MOC","followers_url":"https://api.github.com/users/CCI-MOC/followers","following_url":"https://api.github.com/users/CCI-MOC/following{/other_user}","gists_url":"https://api.github.com/users/CCI-MOC/gists{/gist_id}","starred_url":"https://api.github.com/users/CCI-MOC/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CCI-MOC/subscriptions","organizations_url":"https://api.github.com/users/CCI-MOC/orgs","repos_url":"https://api.github.com/users/CCI-MOC/repos","events_url":"https://api.github.com/users/CCI-MOC/events{/privacy}","received_events_url":"https://api.github.com/users/CCI-MOC/received_events","type":"Organization","site_admin":false},"repo":{"id":16487339,"name":"haas","full_name":"CCI-MOC/haas","owner":{"login":"CCI-MOC","id":3578683,"avatar_url":"https://avatars.githubusercontent.com/u/3578683?v=3","gravatar_id":"","url":"https://api.github.com/users/CCI-MOC","html_url":"https://github.com/CCI-MOC","followers_url":"https://api.github.com/users/CCI-MOC/followers","following_url":"https://api.github.com/users/CCI-MOC/following{/other_user}","gists_url":"https://api.github.com/users/CCI-MOC/gists{/gist_id}","starred_url":"https://api.github.com/users/CCI-MOC/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CCI-MOC/subscriptions","organizations_url":"https://api.github.com/users/CCI-MOC/orgs","repos_url":"https://api.github.com/users/CCI-MOC/repos","events_url":"https://api.github.com/users/CCI-MOC/events{/privacy}","received_events_url":"https://api.github.com/users/CCI-MOC/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/CCI-MOC/haas","description":"","fork":false,"url":"https://api.github.com/repos/CCI-MOC/haas","forks_url":"https://api.github.com/repos/CCI-MOC/haas/forks","keys_url":"https://api.github.com/repos/CCI-MOC/haas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CCI-MOC/haas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CCI-MOC/haas/teams","hooks_url":"https://api.github.com/repos/CCI-MOC/haas/hooks","issue_events_url":"https://api.github.com/repos/CCI-MOC/haas/issues/events{/number}","events_url":"https://api.github.com/repos/CCI-MOC/haas/events","assignees_url":"https://api.github.com/repos/CCI-MOC/haas/assignees{/user}","branches_url":"https://api.github.com/repos/CCI-MOC/haas/branches{/branch}","tags_url":"https://api.github.com/repos/CCI-MOC/haas/tags","blobs_url":"https://api.github.com/repos/CCI-MOC/haas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CCI-MOC/haas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CCI-MOC/haas/git/refs{/sha}","trees_url":"https://api.github.com/repos/CCI-MOC/haas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CCI-MOC/haas/statuses/{sha}","languages_url":"https://api.github.com/repos/CCI-MOC/haas/languages","stargazers_url":"https://api.github.com/repos/CCI-MOC/haas/stargazers","contributors_url":"https://api.github.com/repos/CCI-MOC/haas/contributors","subscribers_url":"https://api.github.com/repos/CCI-MOC/haas/subscribers","subscription_url":"https://api.github.com/repos/CCI-MOC/haas/subscription","commits_url":"https://api.github.com/repos/CCI-MOC/haas/commits{/sha}","git_commits_url":"https://api.github.com/repos/CCI-MOC/haas/git/commits{/sha}","comments_url":"https://api.github.com/repos/CCI-MOC/haas/comments{/number}","issue_comment_url":"https://api.github.com/repos/CCI-MOC/haas/issues/comments{/number}","contents_url":"https://api.github.com/repos/CCI-MOC/haas/contents/{+path}","compare_url":"https://api.github.com/repos/CCI-MOC/haas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CCI-MOC/haas/merges","archive_url":"https://api.github.com/repos/CCI-MOC/haas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CCI-MOC/haas/downloads","issues_url":"https://api.github.com/repos/CCI-MOC/haas/issues{/number}","pulls_url":"https://api.github.com/repos/CCI-MOC/haas/pulls{/number}","milestones_url":"https://api.github.com/repos/CCI-MOC/haas/milestones{/number}","notifications_url":"https://api.github.com/repos/CCI-MOC/haas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CCI-MOC/haas/labels{/name}","releases_url":"https://api.github.com/repos/CCI-MOC/haas/releases{/id}","deployments_url":"https://api.github.com/repos/CCI-MOC/haas/deployments","created_at":"2014-02-03T17:48:01Z","updated_at":"2016-02-12T14:38:11Z","pushed_at":"2016-02-25T06:24:28Z","git_url":"git://github.com/CCI-MOC/haas.git","ssh_url":"git@github.com:CCI-MOC/haas.git","clone_url":"https://github.com/CCI-MOC/haas.git","svn_url":"https://github.com/CCI-MOC/haas","homepage":null,"size":2009,"stargazers_count":6,"watchers_count":6,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":25,"mirror_url":null,"open_issues_count":115,"forks":25,"open_issues":115,"watchers":6,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/CCI-MOC/haas/pulls/526"},"html":{"href":"https://github.com/CCI-MOC/haas/pull/526"},"issue":{"href":"https://api.github.com/repos/CCI-MOC/haas/issues/526"},"comments":{"href":"https://api.github.com/repos/CCI-MOC/haas/issues/526/comments"},"review_comments":{"href":"https://api.github.com/repos/CCI-MOC/haas/pulls/526/comments"},"review_comment":{"href":"https://api.github.com/repos/CCI-MOC/haas/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/CCI-MOC/haas/pulls/526/commits"},"statuses":{"href":"https://api.github.com/repos/CCI-MOC/haas/statuses/fc1e36356e8de3edabd484d17c9efad7da30aa1c"}}}}