{"action":"created","comment":{"url":"https://api.github.com/repos/Teradata/stacki/pulls/comments/205990071","pull_request_review_id":141362362,"id":205990071,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNTk5MDA3MQ==","diff_hunk":"@@ -0,0 +1,352 @@\n+# @copyright@\n+# Copyright (c) 2006 - 2018 Teradata\n+# All rights reserved. Stacki(r) v5.x stacki.com\n+# https://github.com/Teradata/stacki/blob/master/LICENSE.txt\n+# @copyright@\n+\n+import stack.commands\n+import json\n+from stack.exception import CommandError\n+\n+class Plugin(stack.commands.Plugin, stack.commands.Command):\n+\tnotifications = True\n+\n+\tdef provides(self):\n+\t\treturn 'host'\n+\tdef requires(self):\n+\t\treturn [ 'software', 'environment', 'group', 'network', 'appliance', 'os', 'global' ]\n+\n+\tdef run(self, args):\n+\n+\t\t# check if the user would like to import host data\n+\t\t# if there are no args, assume the user would like to import everthing\n+\t\tif args and 'host' not in args:\n+\t\t\treturn\n+\n+\t\t# self.owner.data contains the data from the json file defined in init\n+\t\tif 'host' in self.owner.data:\n+\t\t\timport_data = self.owner.data['host']\n+\t\telse:\n+\t\t\tself.owner.log.info('no host data in json file')\n+\t\t\treturn\n+\n+\t\tself.notify('\\n\\tLoading host\\n')\n+\t\t# add each host then assign its various values to it\n+\t\tfor host in import_data:\n+\t\t\thost_name = host['name']\n+\t\t\ttry:\n+\t\t\t\tparameters = [\n+\t\t\t\t\thost_name,\n+\t\t\t\t\tf'box={host[\"box\"]}',\n+\t\t\t\t\tf'longname={host[\"appliancelongname\"]}',\n+\t\t\t\t\tf'rack={host[\"rack\"]}',\n+\t\t\t\t\tf'rank={host[\"rank\"]}'\n+\t\t\t\t]\n+\t\t\t\tif host['environment']:\n+\t\t\t\t\tparameters.append(f'environment={host[\"environment\"]}')\n+\t\t\t\tself.owner.command('add.host', parameters)\n+\n+\t\t\t\tself.owner.log.info(f'success adding host {host[\"name\"]}')\n+\t\t\t\tself.owner.successes += 1\n+\n+\t\t\texcept CommandError as e:\n+\t\t\t\tif 'exists' in str(e):\n+\t\t\t\t\tself.owner.log.info(f'warning adding host {host[\"name\"]}: {e}')\n+\t\t\t\t\tself.owner.warnings += 1\n+\t\t\t\telse:\n+\t\t\t\t\tself.owner.log.info(f'error adding host {host[\"name\"]}: {e}')\n+\t\t\t\t\tself.owner.errors += 1\n+\n+\n+\t\t\t# iterate through each interface for the host and set it\n+\t\t\tfor interface in host['interface']:\n+\t\t\t\ttry:\n+\t\t\t\t\tself.owner.command('add.host.interface', [host_name, f'interface={interface[\"interface\"]}' ])\n+\t\t\t\t\tself.owner.log.info(f'success adding interface {interface[\"interface\"]}')\n+\t\t\t\t\tself.owner.successes += 1\n+\t\t\t\texcept CommandError as e:\n+\t\t\t\t\tif 'exists' in str(e):\n+\t\t\t\t\t\tself.owner.log.info(f'warning adding interface {interface[\"interface\"]}: {e}')\n+\t\t\t\t\t\tself.owner.warnings += 1\n+\t\t\t\t\telse:\n+\t\t\t\t\t\tself.owner.log.info(f'error adding interface {interface[\"interface\"]}: {e}')\n+\t\t\t\t\t\tself.owner.errors += 1\n+\n+\n+\t\t\t\ttry:\n+\n+\t\t\t\t\tif interface['default']:\n+\t\t\t\t\t\tself.owner.command(\n+\t\t\t\t\t\t\t'set.host.interface.default',\n+\t\t\t\t\t\t\t[ host_name,\n+\t\t\t\t\t\t\t'default=True',\n+\t\t\t\t\t\t\tf'interface={interface[\"interface\"]}'\n+\t\t\t\t\t\t])\n+\t\t\t\t\t\tself.owner.log.info(f'success setting {host[\"name\"]} interface default')\n+\t\t\t\t\t\tself.owner.successes += 1\n+\t\t\t\t\tif interface['network']:\n+\t\t\t\t\t\tself.owner.command('set.host.interface.network', [\n+\t\t\t\t\t\t\t\t\t\t\t\thost_name,\n+\t\t\t\t\t\t\t\t\t\t\t\tf'network={interface[\"network\"]}',\n+\t\t\t\t\t\t\t\t\t\t\t\tf'interface={interface[\"interface\"]}'\n+\t\t\t\t\t\t])\n+\t\t\t\t\t\tself.owner.log.info(f'success setting {host[\"name\"]} interface network')\n+\t\t\t\t\t\tself.owner.successes += 1\n+\t\t\t\t\tif interface['mac']:\n+\t\t\t\t\t\tself.owner.command('set.host.interface.mac', [\n+\t\t\t\t\t\t\t\t\t\t\thost_name,\n+\t\t\t\t\t\t\t\t\t\t\tf'mac={interface[\"mac\"]}',\n+\t\t\t\t\t\t\t\t\t\t\tf'interface={interface[\"interface\"]}'\n+\t\t\t\t\t\t])\n+\t\t\t\t\t\tself.owner.log.info(f'success setting {host[\"name\"]} interface mac')\n+\t\t\t\t\t\tself.owner.successes += 1\n+\t\t\t\t\tif interface['ip']:\n+\t\t\t\t\t\tself.owner.command('set.host.interface.ip', [\n+\t\t\t\t\t\t\t\t\t\t\thost_name,\n+\t\t\t\t\t\t\t\t\t\t\tf'ip={interface[\"ip\"]}',\n+\t\t\t\t\t\t\t\t\t\t\tf'interface={interface[\"interface\"]}'\n+\t\t\t\t\t\t])\n+\t\t\t\t\t\tself.owner.log.info(f'success setting {host[\"name\"]} interface ip')\n+\t\t\t\t\t\tself.owner.successes += 1\n+\t\t\t\t\tif interface['name']:\n+\t\t\t\t\t\tself.owner.command('set.host.interface.name', [\n+\t\t\t\t\t\t\t\t\t\t\thost_name,\n+\t\t\t\t\t\t\t\t\t\t\tf'name={interface[\"name\"]}',\n+\t\t\t\t\t\t\t\t\t\t\tf'interface={interface[\"interface\"]}'\n+\t\t\t\t\t\t])\n+\t\t\t\t\t\tself.owner.log.info(f'success setting {host[\"name\"]} interface name')\n+\t\t\t\t\t\tself.owner.successes += 1\n+\t\t\t\t\tif interface['module']:\n+\t\t\t\t\t\tself.owner.command('set.host.interface.module', [\n+\t\t\t\t\t\t\t\t\t\t\thost_name,\n+\t\t\t\t\t\t\t\t\t\t\tf'module={interface[\"module\"]}',\n+\t\t\t\t\t\t\t\t\t\t\tf'interface={interface[\"interface\"]}'\n+\t\t\t\t\t\t])\n+\t\t\t\t\t\tself.owner.log.info(f'success setting {host[\"name\"]} interface module')\n+\t\t\t\t\t\tself.owner.successes += 1\n+\t\t\t\t\tif interface['vlan']:\n+\t\t\t\t\t\tself.owner.command('set.host.interface.vlan', [\n+\t\t\t\t\t\t\t\t\t\t\thost_name,\n+\t\t\t\t\t\t\t\t\t\t\tf'vlan={interface[\"vlan\"]}',\n+\t\t\t\t\t\t\t\t\t\t\tf'interface={interface[\"interface\"]}'\n+\t\t\t\t\t\t])\n+\t\t\t\t\t\tself.owner.log.info(f'success setting {host[\"name\"]} interface vlan')\n+\t\t\t\t\t\tself.owner.successes += 1\n+\t\t\t\t\tif interface['options']:\n+\t\t\t\t\t\tself.owner.command('set.host.interface.options', [\n+\t\t\t\t\t\t\t\t\t\t\t\thost_name,\n+\t\t\t\t\t\t\t\t\t\t\t\tf'options={interface[\"options\"]}',\n+\t\t\t\t\t\t\t\t\t\t\t\tf'interface={interface[\"interface\"]}'\n+\t\t\t\t\t\t])\n+\t\t\t\t\t\tself.owner.log.info(f'success setting {host[\"name\"]} interface options')\n+\t\t\t\t\t\tself.owner.successes += 1\n+\t\t\t\t\tif interface['channel']:\n+\t\t\t\t\t\tself.owner.command('set.host.interface.channel', [\n+\t\t\t\t\t\t\t\t\t\t\t\thost_name,\n+\t\t\t\t\t\t\t\t\t\t\t\tf'channel={interface[\"channel\"]}',\n+\t\t\t\t\t\t\t\t\t\t\t\tf'interface={interface[\"interface\"]}'\n+\t\t\t\t\t\t])\n+\t\t\t\t\t\tself.owner.log.info(f'success setting {host[\"name\"]} interface channel')\n+\t\t\t\t\t\tself.owner.successes += 1\n+\n+\n+\t\t\t\texcept CommandError as e:\n+\t\t\t\t\tif 'exists' in str(e):\n+\t\t\t\t\t\tself.owner.log.info(f'warning setting host interface {interface[\"name\"]}: {e}')\n+\t\t\t\t\t\tself.owner.warnings += 1\n+\t\t\t\t\telse:\n+\t\t\t\t\t\tself.owner.log.info(f'error setting host interface {interface[\"name\"]}: {e}')\n+\t\t\t\t\t\tself.owner.errors += 1\n+\n+\n+\n+\t\t\t# iterate through each attr for the host and add it\n+\t\t\tfor attr in host['attrs']:\n+\t\t\t\tattr_name = attr['name']\n+\t\t\t\tattr_value = attr['value']\n+\t\t\t\tif not isinstance(attr_value, str):\n+\t\t\t\t\tattr_value = ' '.join(attr['value'])\n+\t\t\t\tattr_shadow = attr['shadow']\n+\t\t\t\ttry:\n+\t\t\t\t\tself.owner.command('set.host.attr', [\n+\t\t\t\t\t\t\t\t\thost_name,\n+\t\t\t\t\t\t\t\t\tf'attr={attr_name}',\n+\t\t\t\t\t\t\t\t\tf'value={attr_value}',\n+\t\t\t\t\t\t\t\t\tf'shadow={attr_shadow}'\n+\t\t\t\t\t])\n+\t\t\t\t\tself.owner.log.info(f'success setting {host[\"name\"]} attr {attr_name}')\n+\t\t\t\t\tself.owner.successes += 1\n+\n+\t\t\t\texcept CommandError as e:\n+\t\t\t\t\tif 'exists' in str(e):\n+\t\t\t\t\t\tself.owner.log.info(f'warning setting {host[\"name\"]} attr {attr_name}: {e}')\n+\t\t\t\t\t\tself.owner.warnings += 1\n+\t\t\t\t\telse:\n+\t\t\t\t\t\tself.owner.log.info(f'error setting {host[\"name\"]} attr {attr_name}: {e}')\n+\t\t\t\t\t\tself.owner.errors += 1\n+\n+\t\t\t#iterate through each firewall rule and add it\n+\t\t\tfor rule in host['firewall']:\n+\t\t\t\ttry:\n+\t\t\t\t\tself.owner.command('add.host.firewall', [\n+\t\t\t\t\t\t\t\t\thost_name,\n+\t\t\t\t\t\t\t\t\tf'action={rule[\"action\"]}',\n+\t\t\t\t\t\t\t\t\tf'chain={rule[\"chain\"]}',\n+\t\t\t\t\t\t\t\t\tf'protocol={rule[\"protocol\"]}',\n+\t\t\t\t\t\t\t\t\tf'service={rule[\"service\"]}',\n+\t\t\t\t\t\t\t\t\tf'comment={rule[\"comment\"]}',\n+\t\t\t\t\t\t\t\t\tf'flags={rule[\"flags\"]}',\n+\t\t\t\t\t\t\t\t\tf'network={rule[\"network\"]}',\n+\t\t\t\t\t\t\t\t\tf'output-network={rule[\"output-network\"]}',\n+\t\t\t\t\t\t\t\t\tf'rulename={rule[\"name\"]}',\n+\t\t\t\t\t\t\t\t\tf'table={rule[\"table\"]}'\n+\t\t\t\t\t])\n+\t\t\t\t\tself.owner.log.info(f'success adding host firewall rule {rule[\"name\"]}')\n+\t\t\t\t\tself.owner.successes += 1\n+\n+\t\t\t\texcept CommandError as e:\n+\t\t\t\t\tif 'exists' in str(e):\n+\t\t\t\t\t\tself.owner.log.info (f'warning adding host firewall rule {rule[\"name\"]}: {e}')\n+\t\t\t\t\t\tself.owner.warnings += 1\n+\t\t\t\t\telse:\n+\t\t\t\t\t\tself.owner.log.info (f'error adding host firewall rule {rule[\"name\"]}: {e}')\n+\t\t\t\t\t\tself.owner.errors += 1\n+\n+\n+\n+\t\t\tfor route in host['route']:\n+\t\t\t\ttry:\n+\t\t\t\t\tself.owner.command('add.host.route', [\n+\t\t\t\t\t\t\t\t\thost_name,\n+\t\t\t\t\t\t\t\t\tf'address={route[\"network\"]}',\n+\t\t\t\t\t\t\t\t\tf'gateway={route[\"gateway\"]}',\n+\t\t\t\t\t\t\t\t\tf'netmask={route[\"netmask\"]}'\n+\t\t\t\t\t])\n+\t\t\t\t\tself.owner.log.info(f'success adding host route {route}')\n+\t\t\t\t\tself.owner.successes += 1\n+\n+\t\t\t\texcept CommandError as e:\n+\t\t\t\t\tif 'exists' in str(e):\n+\t\t\t\t\t\tself.owner.log.info(f'warning adding route {route[\"network\"]}: {e}')\n+\t\t\t\t\t\tself.owner.warnings += 1\n+\t\t\t\t\telse:\n+\t\t\t\t\t\tself.owner.log.info(f'error adding route {route[\"network\"]}: {e}')\n+\t\t\t\t\t\tself.owner.errors += 1\n+\n+\t\t\t# this has issues if some of the groups are already added but not all of them\n+\t\t\t# however it works if the host has no existing groups\n+\t\t\tfor group in host['group']:\n+\t\t\t\ttry:\n+\t\t\t\t\tself.owner.command('add.host.group', [\n+\t\t\t\t\t\t\t\t\thost_name,\n+\t\t\t\t\t\t\t\t\tf'group={group}'\n+\t\t\t\t\t])\n+\t\t\t\texcept CommandError as e:\n+\t\t\t\t\tif 'already' in str(e):\n+\t\t\t\t\t\tself.owner.log.info(f'warning adding host {host_name} to group {group}')\n+\t\t\t\t\t\tself.owner.warnings += 1\n+\t\t\t\t\telse:\n+\t\t\t\t\t\tself.owner.log.info(f'error adding host {host_name} to group {group}')\n+\t\t\t\t\t\tself.owner.errors += 1\n+\n+\n+\t\t\tfor partition in host['partition']:\n+\t\t\t\tparameters = [\n+\t\t\t\t\thost_name,\n+\t\t\t\t\tf'device={partition[\"device\"]}',\n+\t\t\t\t\tf'mountpoint={partition[\"mountpoint\"]}',\n+\t\t\t\t\tf'size={partition[\"size\"]}'\n+\t\t\t\t\t]\n+\t\t\t\tif partition['fstype']:\n+\t\t\t\t\tparameters.append(f'fs={partition[\"fstype\"]}')\n+\t\t\t\tif partition['partid']:\n+\t\t\t\t\tparameters.append(f'partid={partition[\"partid\"]}')\n+\t\t\t\tif partition['options']:\n+\t\t\t\t\tparameters.append(f'options={partition[\"options\"]}')\n+\t\t\t\ttry:\n+\t\t\t\t\tself.owner.command('add.storage.partition', parameters)\n+\t\t\t\t\tself.owner.log.info(f'success adding partition {partition}')\n+\t\t\t\t\tself.owner.successes += 1\n+\n+\t\t\t\texcept CommandError as e:\n+\t\t\t\t\tif 'exists' in str(e):\n+\t\t\t\t\t\tself.owner.log.info (f'warning adding partition: {e}')\n+\t\t\t\t\t\tself.owner.warnings += 1\n+\t\t\t\t\telse:\n+\t\t\t\t\t\tself.owner.log.info (f'error adding partition: {e}')\n+\t\t\t\t\t\tself.owner.errors += 1\n+\n+\n+\n+\t\t\tfor controller in host['controller']:\n+\t\t\t\ttry:\n+\t\t\t\t\tself.owner.log.info('adding host controller...')\n+\t\t\t\t\tself.owner.command('add.storage.controller', [","path":"common/src/stack/command/stack/commands/load/json/plugin_host.py","position":284,"original_position":284,"commit_id":"c07895826c2c3d9ad8599a79aa23c04c8d7c0489","original_commit_id":"c07895826c2c3d9ad8599a79aa23c04c8d7c0489","user":{"login":"bsanders","id":1420834,"node_id":"MDQ6VXNlcjE0MjA4MzQ=","avatar_url":"https://avatars2.githubusercontent.com/u/1420834?v=4","gravatar_id":"","url":"https://api.github.com/users/bsanders","html_url":"https://github.com/bsanders","followers_url":"https://api.github.com/users/bsanders/followers","following_url":"https://api.github.com/users/bsanders/following{/other_user}","gists_url":"https://api.github.com/users/bsanders/gists{/gist_id}","starred_url":"https://api.github.com/users/bsanders/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bsanders/subscriptions","organizations_url":"https://api.github.com/users/bsanders/orgs","repos_url":"https://api.github.com/users/bsanders/repos","events_url":"https://api.github.com/users/bsanders/events{/privacy}","received_events_url":"https://api.github.com/users/bsanders/received_events","type":"User","site_admin":false},"body":"What about `hotspare`?","created_at":"2018-07-29T22:46:19Z","updated_at":"2018-07-29T23:02:01Z","html_url":"https://github.com/Teradata/stacki/pull/273#discussion_r205990071","pull_request_url":"https://api.github.com/repos/Teradata/stacki/pulls/273","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/Teradata/stacki/pulls/comments/205990071"},"html":{"href":"https://github.com/Teradata/stacki/pull/273#discussion_r205990071"},"pull_request":{"href":"https://api.github.com/repos/Teradata/stacki/pulls/273"}}},"pull_request":{"url":"https://api.github.com/repos/Teradata/stacki/pulls/273","id":203924475,"node_id":"MDExOlB1bGxSZXF1ZXN0MjAzOTI0NDc1","html_url":"https://github.com/Teradata/stacki/pull/273","diff_url":"https://github.com/Teradata/stacki/pull/273.diff","patch_url":"https://github.com/Teradata/stacki/pull/273.patch","issue_url":"https://api.github.com/repos/Teradata/stacki/issues/273","number":273,"state":"open","locked":false,"title":"Auto PR: feature/dump-load","user":{"login":"stackibot","id":24662167,"node_id":"MDQ6VXNlcjI0NjYyMTY3","avatar_url":"https://avatars0.githubusercontent.com/u/24662167?v=4","gravatar_id":"","url":"https://api.github.com/users/stackibot","html_url":"https://github.com/stackibot","followers_url":"https://api.github.com/users/stackibot/followers","following_url":"https://api.github.com/users/stackibot/following{/other_user}","gists_url":"https://api.github.com/users/stackibot/gists{/gist_id}","starred_url":"https://api.github.com/users/stackibot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stackibot/subscriptions","organizations_url":"https://api.github.com/users/stackibot/orgs","repos_url":"https://api.github.com/users/stackibot/repos","events_url":"https://api.github.com/users/stackibot/events{/privacy}","received_events_url":"https://api.github.com/users/stackibot/received_events","type":"User","site_admin":false},"body":null,"created_at":"2018-07-25T18:30:23Z","updated_at":"2018-07-29T23:02:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d2b3d132ab1ed3ba002061fdad0cb59c62b8fadf","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Teradata/stacki/pulls/273/commits","review_comments_url":"https://api.github.com/repos/Teradata/stacki/pulls/273/comments","review_comment_url":"https://api.github.com/repos/Teradata/stacki/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Teradata/stacki/issues/273/comments","statuses_url":"https://api.github.com/repos/Teradata/stacki/statuses/c07895826c2c3d9ad8599a79aa23c04c8d7c0489","head":{"label":"Teradata:feature/dump-load","ref":"feature/dump-load","sha":"c07895826c2c3d9ad8599a79aa23c04c8d7c0489","user":{"login":"Teradata","id":1615979,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE2MTU5Nzk=","avatar_url":"https://avatars1.githubusercontent.com/u/1615979?v=4","gravatar_id":"","url":"https://api.github.com/users/Teradata","html_url":"https://github.com/Teradata","followers_url":"https://api.github.com/users/Teradata/followers","following_url":"https://api.github.com/users/Teradata/following{/other_user}","gists_url":"https://api.github.com/users/Teradata/gists{/gist_id}","starred_url":"https://api.github.com/users/Teradata/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Teradata/subscriptions","organizations_url":"https://api.github.com/users/Teradata/orgs","repos_url":"https://api.github.com/users/Teradata/repos","events_url":"https://api.github.com/users/Teradata/events{/privacy}","received_events_url":"https://api.github.com/users/Teradata/received_events","type":"Organization","site_admin":false},"repo":{"id":35458005,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ1ODAwNQ==","name":"stacki","full_name":"Teradata/stacki","owner":{"login":"Teradata","id":1615979,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE2MTU5Nzk=","avatar_url":"https://avatars1.githubusercontent.com/u/1615979?v=4","gravatar_id":"","url":"https://api.github.com/users/Teradata","html_url":"https://github.com/Teradata","followers_url":"https://api.github.com/users/Teradata/followers","following_url":"https://api.github.com/users/Teradata/following{/other_user}","gists_url":"https://api.github.com/users/Teradata/gists{/gist_id}","starred_url":"https://api.github.com/users/Teradata/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Teradata/subscriptions","organizations_url":"https://api.github.com/users/Teradata/orgs","repos_url":"https://api.github.com/users/Teradata/repos","events_url":"https://api.github.com/users/Teradata/events{/privacy}","received_events_url":"https://api.github.com/users/Teradata/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Teradata/stacki","description":"NOTICE: For legacy Stacki Pro / StackIQ Enterprise support — the support@stackiq.com email address is deprecated.  Please use either Slack (preferred) or support@stackiq.zendesk.com to access our legacy support ticketing system.","fork":false,"url":"https://api.github.com/repos/Teradata/stacki","forks_url":"https://api.github.com/repos/Teradata/stacki/forks","keys_url":"https://api.github.com/repos/Teradata/stacki/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Teradata/stacki/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Teradata/stacki/teams","hooks_url":"https://api.github.com/repos/Teradata/stacki/hooks","issue_events_url":"https://api.github.com/repos/Teradata/stacki/issues/events{/number}","events_url":"https://api.github.com/repos/Teradata/stacki/events","assignees_url":"https://api.github.com/repos/Teradata/stacki/assignees{/user}","branches_url":"https://api.github.com/repos/Teradata/stacki/branches{/branch}","tags_url":"https://api.github.com/repos/Teradata/stacki/tags","blobs_url":"https://api.github.com/repos/Teradata/stacki/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Teradata/stacki/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Teradata/stacki/git/refs{/sha}","trees_url":"https://api.github.com/repos/Teradata/stacki/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Teradata/stacki/statuses/{sha}","languages_url":"https://api.github.com/repos/Teradata/stacki/languages","stargazers_url":"https://api.github.com/repos/Teradata/stacki/stargazers","contributors_url":"https://api.github.com/repos/Teradata/stacki/contributors","subscribers_url":"https://api.github.com/repos/Teradata/stacki/subscribers","subscription_url":"https://api.github.com/repos/Teradata/stacki/subscription","commits_url":"https://api.github.com/repos/Teradata/stacki/commits{/sha}","git_commits_url":"https://api.github.com/repos/Teradata/stacki/git/commits{/sha}","comments_url":"https://api.github.com/repos/Teradata/stacki/comments{/number}","issue_comment_url":"https://api.github.com/repos/Teradata/stacki/issues/comments{/number}","contents_url":"https://api.github.com/repos/Teradata/stacki/contents/{+path}","compare_url":"https://api.github.com/repos/Teradata/stacki/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Teradata/stacki/merges","archive_url":"https://api.github.com/repos/Teradata/stacki/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Teradata/stacki/downloads","issues_url":"https://api.github.com/repos/Teradata/stacki/issues{/number}","pulls_url":"https://api.github.com/repos/Teradata/stacki/pulls{/number}","milestones_url":"https://api.github.com/repos/Teradata/stacki/milestones{/number}","notifications_url":"https://api.github.com/repos/Teradata/stacki/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Teradata/stacki/labels{/name}","releases_url":"https://api.github.com/repos/Teradata/stacki/releases{/id}","deployments_url":"https://api.github.com/repos/Teradata/stacki/deployments","created_at":"2015-05-12T00:43:28Z","updated_at":"2018-07-01T18:59:17Z","pushed_at":"2018-07-27T23:17:33Z","git_url":"git://github.com/Teradata/stacki.git","ssh_url":"git@github.com:Teradata/stacki.git","clone_url":"https://github.com/Teradata/stacki.git","svn_url":"https://github.com/Teradata/stacki","homepage":"","size":1462985,"stargazers_count":166,"watchers_count":166,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":46,"mirror_url":null,"archived":false,"open_issues_count":49,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":46,"open_issues":49,"watchers":166,"default_branch":"master"}},"base":{"label":"Teradata:develop","ref":"develop","sha":"3c9b5c8544fa7c4d5d7f8c5c0a612daa4770810b","user":{"login":"Teradata","id":1615979,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE2MTU5Nzk=","avatar_url":"https://avatars1.githubusercontent.com/u/1615979?v=4","gravatar_id":"","url":"https://api.github.com/users/Teradata","html_url":"https://github.com/Teradata","followers_url":"https://api.github.com/users/Teradata/followers","following_url":"https://api.github.com/users/Teradata/following{/other_user}","gists_url":"https://api.github.com/users/Teradata/gists{/gist_id}","starred_url":"https://api.github.com/users/Teradata/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Teradata/subscriptions","organizations_url":"https://api.github.com/users/Teradata/orgs","repos_url":"https://api.github.com/users/Teradata/repos","events_url":"https://api.github.com/users/Teradata/events{/privacy}","received_events_url":"https://api.github.com/users/Teradata/received_events","type":"Organization","site_admin":false},"repo":{"id":35458005,"node_id":"MDEwOlJlcG9zaXRvcnkzNTQ1ODAwNQ==","name":"stacki","full_name":"Teradata/stacki","owner":{"login":"Teradata","id":1615979,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE2MTU5Nzk=","avatar_url":"https://avatars1.githubusercontent.com/u/1615979?v=4","gravatar_id":"","url":"https://api.github.com/users/Teradata","html_url":"https://github.com/Teradata","followers_url":"https://api.github.com/users/Teradata/followers","following_url":"https://api.github.com/users/Teradata/following{/other_user}","gists_url":"https://api.github.com/users/Teradata/gists{/gist_id}","starred_url":"https://api.github.com/users/Teradata/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Teradata/subscriptions","organizations_url":"https://api.github.com/users/Teradata/orgs","repos_url":"https://api.github.com/users/Teradata/repos","events_url":"https://api.github.com/users/Teradata/events{/privacy}","received_events_url":"https://api.github.com/users/Teradata/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Teradata/stacki","description":"NOTICE: For legacy Stacki Pro / StackIQ Enterprise support — the support@stackiq.com email address is deprecated.  Please use either Slack (preferred) or support@stackiq.zendesk.com to access our legacy support ticketing system.","fork":false,"url":"https://api.github.com/repos/Teradata/stacki","forks_url":"https://api.github.com/repos/Teradata/stacki/forks","keys_url":"https://api.github.com/repos/Teradata/stacki/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Teradata/stacki/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Teradata/stacki/teams","hooks_url":"https://api.github.com/repos/Teradata/stacki/hooks","issue_events_url":"https://api.github.com/repos/Teradata/stacki/issues/events{/number}","events_url":"https://api.github.com/repos/Teradata/stacki/events","assignees_url":"https://api.github.com/repos/Teradata/stacki/assignees{/user}","branches_url":"https://api.github.com/repos/Teradata/stacki/branches{/branch}","tags_url":"https://api.github.com/repos/Teradata/stacki/tags","blobs_url":"https://api.github.com/repos/Teradata/stacki/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Teradata/stacki/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Teradata/stacki/git/refs{/sha}","trees_url":"https://api.github.com/repos/Teradata/stacki/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Teradata/stacki/statuses/{sha}","languages_url":"https://api.github.com/repos/Teradata/stacki/languages","stargazers_url":"https://api.github.com/repos/Teradata/stacki/stargazers","contributors_url":"https://api.github.com/repos/Teradata/stacki/contributors","subscribers_url":"https://api.github.com/repos/Teradata/stacki/subscribers","subscription_url":"https://api.github.com/repos/Teradata/stacki/subscription","commits_url":"https://api.github.com/repos/Teradata/stacki/commits{/sha}","git_commits_url":"https://api.github.com/repos/Teradata/stacki/git/commits{/sha}","comments_url":"https://api.github.com/repos/Teradata/stacki/comments{/number}","issue_comment_url":"https://api.github.com/repos/Teradata/stacki/issues/comments{/number}","contents_url":"https://api.github.com/repos/Teradata/stacki/contents/{+path}","compare_url":"https://api.github.com/repos/Teradata/stacki/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Teradata/stacki/merges","archive_url":"https://api.github.com/repos/Teradata/stacki/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Teradata/stacki/downloads","issues_url":"https://api.github.com/repos/Teradata/stacki/issues{/number}","pulls_url":"https://api.github.com/repos/Teradata/stacki/pulls{/number}","milestones_url":"https://api.github.com/repos/Teradata/stacki/milestones{/number}","notifications_url":"https://api.github.com/repos/Teradata/stacki/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Teradata/stacki/labels{/name}","releases_url":"https://api.github.com/repos/Teradata/stacki/releases{/id}","deployments_url":"https://api.github.com/repos/Teradata/stacki/deployments","created_at":"2015-05-12T00:43:28Z","updated_at":"2018-07-01T18:59:17Z","pushed_at":"2018-07-27T23:17:33Z","git_url":"git://github.com/Teradata/stacki.git","ssh_url":"git@github.com:Teradata/stacki.git","clone_url":"https://github.com/Teradata/stacki.git","svn_url":"https://github.com/Teradata/stacki","homepage":"","size":1462985,"stargazers_count":166,"watchers_count":166,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":46,"mirror_url":null,"archived":false,"open_issues_count":49,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":46,"open_issues":49,"watchers":166,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Teradata/stacki/pulls/273"},"html":{"href":"https://github.com/Teradata/stacki/pull/273"},"issue":{"href":"https://api.github.com/repos/Teradata/stacki/issues/273"},"comments":{"href":"https://api.github.com/repos/Teradata/stacki/issues/273/comments"},"review_comments":{"href":"https://api.github.com/repos/Teradata/stacki/pulls/273/comments"},"review_comment":{"href":"https://api.github.com/repos/Teradata/stacki/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Teradata/stacki/pulls/273/commits"},"statuses":{"href":"https://api.github.com/repos/Teradata/stacki/statuses/c07895826c2c3d9ad8599a79aa23c04c8d7c0489"}},"author_association":"NONE"}}
{"actor":{"display_login":"bsanders"}}