This is an automated email from the ASF dual-hosted git repository.

zrhoffman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git


The following commit(s) were added to refs/heads/master by this push:
     new bee4fe7ba6 Clean up unused code (#7271)
bee4fe7ba6 is described below

commit bee4fe7ba620bbec3f74111ac66922416520c7f1
Author: Eric Holguin <[email protected]>
AuthorDate: Wed Apr 5 16:38:22 2023 -0400

    Clean up unused code (#7271)
    
    * Remove mentions of todb_bootstrap
    
    * Add removals to changelog
    
    * Add PR link to change log
    
    * undo removal of _postinstall.pl and library files
    
    * update change log
    
    * fix bad copy
    
    * fix change log
    
    * fix change log
    
    * Add back convert profile
    
    * remove unused command
---
 CHANGELOG.md                                       |   6 +
 infrastructure/docker/README.md                    | 192 --------------
 infrastructure/docker/traffic_monitor/Dockerfile   |  42 ---
 infrastructure/docker/traffic_monitor/run.sh       | 145 ----------
 infrastructure/docker/traffic_ops/Dockerfile       |  74 ------
 infrastructure/docker/traffic_ops/Dockerfile_psql  |  43 ---
 infrastructure/docker/traffic_ops/dbInit.sh        |  30 ---
 .../docker/traffic_ops/docker-compose.yml          |  89 -------
 .../docker/traffic_ops/profile.origin.traffic_ops  |  18 --
 infrastructure/docker/traffic_ops/run.sh           | 292 ---------------------
 infrastructure/docker/traffic_router/Dockerfile    |  59 -----
 infrastructure/docker/traffic_router/run.sh        | 111 --------
 infrastructure/docker/traffic_router/shutdowntr.sh |  36 ---
 infrastructure/docker/traffic_router/starttr.sh    |  44 ----
 .../docker/traffic_server_edge/Dockerfile          | 279 --------------------
 infrastructure/docker/traffic_server_edge/run.sh   | 104 --------
 .../docker/traffic_server_mid/Dockerfile           |  74 ------
 infrastructure/docker/traffic_server_mid/run.sh    |  97 -------
 infrastructure/docker/traffic_stats/Dockerfile     |  46 ----
 infrastructure/docker/traffic_stats/run.sh         | 134 ----------
 infrastructure/docker/traffic_vault/Dockerfile     |  53 ----
 infrastructure/docker/traffic_vault/run.sh         | 103 --------
 misc/jira_github_issue_import.py                   | 238 -----------------
 traffic_ops/build/traffic_ops.spec                 |   3 -
 traffic_ops/install/bin/_postinstall.py            |   6 +-
 traffic_ops/install/bin/install_go.sh              |  47 ----
 traffic_ops/install/bin/install_goose.sh           |  20 --
 traffic_ops/install/bin/todb_bootstrap.sh          |  53 ----
 28 files changed, 8 insertions(+), 2430 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index fcac2c78fb..02653b498c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -98,6 +98,12 @@ The format is based on [Keep a 
Changelog](http://keepachangelog.com/en/1.0.0/).
 - [#7411](https://github.com/apache/trafficcontrol/pull/7411) *Traffic Control 
Cache Config (t3c)* Fixed issue with wrong parent ordering with MSO 
non-topology delivery services.
 - [#7425](https://github.com/apache/trafficcontrol/pull/7425) *Traffic Control 
Cache Config (t3c)* Fixed issue with layered profile iteration being done in 
the wrong order.
 
+### Removed
+- [#7271](https://github.com/apache/trafficcontrol/pull/7271) Remove 
components in `infrastructre/docker/`, not in use as cdn-in-a-box performs the 
same functionality.
+- [#7271](https://github.com/apache/trafficcontrol/pull/7271) 
Remove`misc/jira_github_issue_import.py`, the project does not use JIRA.
+- [#7271](https://github.com/apache/trafficcontrol/pull/7271) Remove 
`traffic_ops/install/bin/convert_profile/`, this script is outdated and is for 
use on an EOL ATS version.
+- [#7271](https://github.com/apache/trafficcontrol/pull/7271) Remove 
`traffic_ops/install/bin/install_go.sh`, 
`traffic_ops/install/bin/todb_bootstrap.sh` and 
`traffic_ops/install/bin/install_goose.sh` are no longer in use.
+
 ## [7.0.0] - 2022-07-19
 ### Added
 - [Traffic Portal] Added Layered Profile feature to /servers/
diff --git a/infrastructure/docker/README.md b/infrastructure/docker/README.md
deleted file mode 100644
index 484f522f29..0000000000
--- a/infrastructure/docker/README.md
+++ /dev/null
@@ -1,192 +0,0 @@
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
--->
-
-Traffic Control in Docker
-=========================
-
-Traffic Control wasn't designed to run in containers or with the microservice 
ideology, so there's a bit of coercing to make Docker work. But feel free to 
try it if you're feeling adventurous.
-
-IP addresses and hostnames
---------------------------
-The CDN requires real hostnames. Ideally, internal CDN communication could 
take place via Docker networking, using Docker internal IPs, hostnames, and 
container names. But the CDN doesn't currently distinguish between internal and 
external communication addresses. Further, the version of Apache Traffic Server 
we're using doesn't use `/etc/hosts`, which is what Docker uses to share 
hostnames between containers on a Docker Network.
-
-So, we typically allocate public hostnames, domains, and IPs for each 
container. See the examples below.
-
-Note if you have multiple IP addresses on a single network interface, you will 
have to create IP aliases. Docker requires a single interface per IP. You can 
create an Ethernet alias in Linux with `ifconfig` with, for example, `sudo 
ifconfig myinterface0:1 192.0.2.0 netmask 255.255.255.0 up`, where 
`myinterface0` is the interface with a range of IP addresses, and `192.0.2.0` 
is the IP you want to create the alias for. You can then forward a port on a 
Docker container with, for example, `d [...]
-
-
-Docker Networks
------------------
-[Docker 
Networks](https://docs.docker.com/engine/userguide/networking/dockernetworks/), 
as opposed to `--link` or other container communication mechanisms, is 
necessary for a number of reasons.
-
-Most of the following is only necessary if you're trying to set up a CDN in 
Docker without external IPs or hostnames. But these things seem to be generally 
good practice.
-
-#### Container names
-
-- Containers MUST have names which are valid hostnames
-- Containers MUST have the same name and hostname. That is, `docker run` 
`--name` and `--hostname` MUST match.
-
-This is because `docker run` `--hostname` sets the container's `hostname` 
($HOSTNAME), while `--name` sets the /etc/hosts entry for _other_ containers. 
If they are different, the name by which a container knows itself will be 
different from the name by which other containers access it. This will lead to 
confusion and pain.
-
-#### Hostnames
-
-Docker Networks automatically update every container on the network's 
`/etc/hosts` file with the hostname of a new container. Without this, for 
example, you would have to somehow manually update the Traffic Ops container 
when bringing up a new Traffic Vault container, with the new container's 
hostname–IP mapping. This is strictly necessary because Traffic Control 
requires hostnames and domains, not IPs, in certain places.
-
-#### Domains
-
-Docker networks also updates the `/etc/hosts` file of member containers with 
`hostname.networkname`, which should theoretically allow us to treat the Docker 
network name as the domain name within Traffic Control. For example, you will 
see the network name `cdnet` used in the example run command in the 
Dockerfiles, and then `cdnet` could also (theoretically) be passed as the 
domain name to various Traffic Control components.
-
-Without Docker Networks, each container's hostname could be set as 
`hostname.domainname`, but that would cause other issues, such as `hostname` 
itself not existing as a host name.
-
-Without Docker Networks, each Traffic Control component must also have to have 
its ports exposed on the host machine, or else use the deprecated Docker 
`--link` mechanism.
-
-Run scripts
------------
-
-Each Dockerfile creates a generic image, which should be usable in any 
environment. If a Dockerfile includes CDN-specific values or data, that's a 
bug. Consequently, `docker build` should require few, if any, environment 
variables.
-
-Each container has a `_run.sh` script which configures the container. While 
self-contained Dockerfiles would be ideal, in practice the Traffic Control 
components need dynamic configuration. If self-contained Dockerfiles were 
necessary, an `echo` command could be added to the Dockerfile to create the run 
script; but it would be ugly.
-
-Each run script has 2 functions, `init` and `start`. The init is run only 
once, and configures the container's service. After the first run, only `start` 
is run.
-
-Cache devices
--------------
-
-The Apache Traffic Server containers look for devices at `/dev/ram0` and 
`/dev/ram1`. You can pass devices on the host to containers with `docker run` 
`--device`. If no devices are passed, the run script will try to create 1GB 
files to use as caches.
-
-You can create block RAM devices on Linux with, for example, `sudo modprobe 
brd rd_size=1048576 rd_nr=8`. This will create 8 RAM disks at `/dev/ram0` thru 
`/dev/ram7` of 1GB each. These devices can then be passed to the Apache Traffic 
Server containers, as in the example below.
-
-Privileged containers
----------------------
-
-The Traffic Server containers must be run with `--privileged` and `--cap-add 
NET_BIND_SERVICE` in order for Apache Traffic Server to bind on port 80. If you 
don't want to run privileged containers, you can try modifying the containers 
to run on another port (you will also need to update their ports in the Traffic 
Ops server entry, update the Traffic Ops `server_ports` parameters, re-generate 
the CRConfig in Traffic Ops, and re-run the `ort` script on the caches).
-
-Example
---------
-
-Suppose you have the following IPs on the host, each on their own network 
interface (or alias), with the following hostnames
-
-IP          | Hostname
-------------|---------
-192.0.2.100 | c23-to-db
-192.0.2.101 | c23-to-01
-192.0.2.102 | c23-tv-01
-192.0.2.103 | c23-hotair-01
-192.0.2.104 | c23-atsec-01
-192.0.2.105 | c23-atsec-01
-192.0.2.106 | c23-atsmid-01
-192.0.2.107 | c23-atsmid-02
-192.0.2.108 | c23-tm-01
-192.0.2.109 | c23-tm-02
-192.0.2.110 | c23-tr-01
-192.0.2.111 | c23-ts-01
-
-And the NS record `c23` registered with `example.net`.
-
-You will also need an Origin server. This just needs to be a simple HTTP 
server, serving some content somewhere. For this example, we will assume there 
is an origin server with the IP `192.0.2.103` and hostname `c23-hotair-01` 
serving `http://c23-hotair-01.example.net/test.ism/manifest`.
-
-Finally, for this example, we will assume the host has cache drives at 
`/dev/ram0` thru `/dev/ram7`. If you don't want to pass drives, simply omit the 
`--device` flags from the examples, and the containers will try to create disk 
files to use as cache instead.
-
-In the example commands, `-it` runs the container interactively, so you can 
watch the initialization process, and (hopefully) see if anything goes wrong. 
Once the initialization finishes, you can detach from the container with 
`ctrl+p ctrl+q`. Alternatively, remove the `-it` flags and add `-d` to run the 
containers detached. However, certain containers need to finish initializing 
before the next container can be started, and without running interactively it 
can be difficult to tell.
-
-With the prior assumptions, the following commands will set up a CDN:
-
-```bash
-docker network create cdnet
-
-sudo docker run -it --publish 192.0.2.100:3306:3306 --name c23-to-db 
--hostname c23-to-db --net cdnet --env MYSQL_ROOT_PASS=secretrootpass --env 
IP=192.0.2.100 mysql:5.5
-
-sudo docker run -it --publish 192.0.2.101:443:443 --name c23-to-01 --hostname 
c23-to-01 --net cdnet --env MYSQL_IP=c23-to-db.example.net --env 
MYSQL_PORT=3306 --env MYSQL_ROOT_PASS=secretrootpass --env 
MYSQL_TRAFFIC_OPS_PASS=supersecretpassword --env ADMIN_USER=superroot --env 
ADMIN_PASS=supersecreterpassward --env CERT_COUNTRY=US --env 
CERT_STATE=Colorado --env CERT_CITY=Denver --env CERT_COMPANY=Kabletown --env 
TRAFFIC_VAULT_PASS=marginallylesssecret --env IP=192.0.2.101 --env DOMAIN=c 
[...]
-
-sudo docker run -it --publish 192.0.2.102:8088:8088 --name c23-tv-01 
--hostname c23-tv-01 --net cdnet --env ADMIN_PASS=riakadminsecret --env 
USER_PASS=marginallylesssecret --env CERT_COUNTRY=US --env CERT_STATE=Colorado 
--env CERT_CITY=Denver --env CERT_COMPANY=Kabletown --env 
TRAFFIC_OPS_URI=https://c23-to-01.example.net --env TRAFFIC_OPS_USER=superroot 
--env TRAFFIC_OPS_PASS=supersecreterpassward --env DOMAIN=example.net --env 
IP=192.0.2.102 --env GATEWAY=192.0.2.161 traffic_vault:1.4
-
-sudo docker run -it --publish 192.0.2.104:80:80 --name c23-atsec-01 --hostname 
c23-atsec-01 --net cdnet --privileged --cap-add NET_BIND_SERVICE --device 
/dev/ram0:/dev/ram0 --device /dev/ram1:/dev/ram1 --env 
TRAFFIC_OPS_URI=https://c23-to-01.example.net --env TRAFFIC_OPS_USER=superroot 
--env TRAFFIC_OPS_PASS=supersecreterpassward --env DOMAIN=example.net --env 
IP=192.0.2.104 --env GATEWAY=192.0.2.161 traffic_server_edge:1.4
-
-sudo docker run -it --publish 192.0.2.105:80:80 --name c23-atsec-02 --hostname 
c23-atsec-02 --net cdnet --privileged --cap-add NET_BIND_SERVICE --device 
/dev/ram2:/dev/ram0 --device /dev/ram3:/dev/ram1 --env 
TRAFFIC_OPS_URI=https://c23-to-01.example.net --env TRAFFIC_OPS_USER=superroot 
--env TRAFFIC_OPS_PASS=supersecreterpassward --env DOMAIN=example.net --env 
IP=192.0.2.105 --env GATEWAY=192.0.2.161 traffic_server_edge:1.4
-
-sudo docker run -it --publish 192.0.2.106:80:80 --name c23-atsmid-01 
--hostname c23-atsmid-01 --net cdnet --privileged --cap-add NET_BIND_SERVICE 
--device /dev/ram4:/dev/ram0 --device /dev/ram5:/dev/ram1 --env 
TRAFFIC_OPS_URI=https://c23-to-01.example.net --env TRAFFIC_OPS_USER=superroot 
--env TRAFFIC_OPS_PASS=supersecreterpassward --env DOMAIN=example.net --env 
IP=192.0.2.106 --env GATEWAY=192.0.2.161 traffic_server_mid:1.4
-
-sudo docker run -it --publish 192.0.2.107:80:80 --name c23-atsmid-02 
--hostname c23-atsmid-02 --net cdnet --privileged --cap-add NET_BIND_SERVICE 
--device /dev/ram6:/dev/ram0 --device /dev/ram7:/dev/ram1 --env 
TRAFFIC_OPS_URI=https://c23-to-01.example.net --env TRAFFIC_OPS_USER=superroot 
--env TRAFFIC_OPS_PASS=supersecreterpassward --env DOMAIN=example.net --env 
IP=192.0.2.107 --env GATEWAY=192.0.2.161 traffic_server_mid:1.4
-
-sudo docker run -it --publish 192.0.2.108:80:80 --name c23-tm-01 --hostname 
c23-tm-01 --net cdnet --env TRAFFIC_OPS_URI=https://c23-to-01.example.net --env 
TRAFFIC_OPS_USER=superroot --env TRAFFIC_OPS_PASS=supersecreterpassward --env 
DOMAIN=example.net --env IP=192.0.2.108 --env GATEWAY=192.0.2.161 
traffic_monitor:1.4
-
-sudo docker run -it --publish 192.0.2.109:80:80 --name c23-tm-02 --hostname 
c23-tm-02 --net cdnet --env TRAFFIC_OPS_URI=https://c23-to-01.example.net --env 
TRAFFIC_OPS_USER=superroot --env TRAFFIC_OPS_PASS=supersecreterpassward --env 
DOMAIN=example.net --env IP=192.0.2.109 --env GATEWAY=192.0.2.161 
traffic_monitor:1.4
-
-# The following commands will add the Origin server to Traffic Ops.
-# If your Origin is built in Docker, you could add these commands to the 
container run script.
-TMP_IP='192.0.2.103'
-TMP_DOMAIN='example.net'
-TMP_GATEWAY='192.0.2.161'
-TMP_TRAFFIC_OPS_USER='superroot'
-TMP_TRAFFIC_OPS_PASS='supersecreterpassward'
-TMP_TRAFFIC_OPS_URI='https://c23-to-01.example.net'
-TMP_HOSTNAME='c23-hotair-01'
-TMP_TO_COOKIE="$(curl -v -s -k -X POST --data '{ 
"u":"'"$TMP_TRAFFIC_OPS_USER"'", "p":"'"$TMP_TRAFFIC_OPS_PASS"'" }' 
$TMP_TRAFFIC_OPS_URI/api/4.0/user/login 2>&1 | grep 'Set-Cookie' | sed -e 
's/.*mojolicious=\(.*\); expires.*/\1/')"
-TMP_CACHEGROUP_ID="$(curl -s -k -X GET -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
$TMP_TRAFFIC_OPS_URI/api/4.0/cachegroups.json | python -c 'import 
json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in obj["response"] if 
x["name"]=="mid-east"]; print match[0]')"
-TMP_SERVER_TYPE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TMP_TRAFFIC_OPS_URI/api/4.0/types.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="ORG"]; print match[0]')"
-TMP_SERVER_PROFILE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TMP_TRAFFIC_OPS_URI/api/4.0/profiles.json | python 
-c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="ORG1_CDN1"]; print match[0]')"
-TMP_PHYS_LOCATION_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TMP_TRAFFIC_OPS_URI/api/4.0/phys_locations.json | 
python -c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="plocation-nyc-1"]; print match[0]')"
-TMP_CDN_ID="$(curl -s -k -X GET -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
$TMP_TRAFFIC_OPS_URI/api/4.0/cdns.json | python -c 'import 
json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in obj["response"] if 
x["name"]=="cdn"]; print match[0]')"
-curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" --data-urlencode 
"host_name=$TMP_HOSTNAME" --data-urlencode "domain_name=$TMP_DOMAIN" 
--data-urlencode "interface_name=eth0" --data-urlencode "ip_address=$TMP_IP" 
--data-urlencode "ip_netmask=255.255.0.0" --data-urlencode 
"ip_gateway=$TMP_GATEWAY" --data-urlencode "interface_mtu=9000" 
--data-urlencode "cdn=$TMP_CDN_ID" --data-urlencode 
"cachegroup=$TMP_CACHEGROUP_ID" --data-urlencode 
"phys_location=$TMP_PHYS_LOCATION_ID" --data-u [...]
-TMP_SERVER_ID="$(curl -s -k -X GET -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
$TMP_TRAFFIC_OPS_URI/api/4.0/servers.json | python -c 'import 
json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in obj["response"] if 
x["hostName"]=="'"$TMP_HOSTNAME"'"]; print match[0]')"
-curl -v -k -H "Content-Type: application/x-www-form-urlencoded" -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" -X POST --data-urlencode "id=$TMP_SERVER_ID" 
--data-urlencode "status=ONLINE" $TMP_TRAFFIC_OPS_URI/server/updatestatus
-
-sudo docker run -it --publish 192.0.2.110:80:80 --publish 
192.0.2.110:3333:3333 --publish 192.0.2.110:53:53 --publish 
192.0.2.110:53:53/udp --name c23-tr-01 --hostname c23-tr-01 --net cdnet --env 
TRAFFIC_OPS_URI=https://c23-to-01.example.net --env TRAFFIC_OPS_USER=superroot 
--env TRAFFIC_OPS_PASS=supersecreterpassward --env 
TRAFFIC_MONITORS="c23-tm-01.example.net:80;c23-tm-02.example.net:80" --env 
ORIGIN_URI="http://c23-hotair-01.example.net"; --env DOMAIN=example.net --env 
IP=192.0.2.110 [...]
-
-sudo docker run -it --publish 192.0.2.111:8083:8083 --publish 
192.0.2.111:8086:8086 --name c23-ts-01 --hostname c23-ts-01 --net cdnet --env 
TRAFFIC_OPS_URI=https://c23-to-01.example.net --env TRAFFIC_OPS_USER=superroot 
--env TRAFFIC_OPS_PASS=supersecreterpassward --env CERT_COUNTRY=US --env 
CERT_STATE=Colorado --env CERT_CITY=Denver --env CERT_COMPANY=Kabletown --env 
DOMAIN=example.net --env IP=192.0.2.111 --env GATEWAY=192.0.2.161 
traffic_stats:1.4
-
-# Edge and Mid caches must be created first to add themselves as servers to 
Traffic Ops.
-# Once Traffic Ops has all the servers and the CRConfig is generated (by the 
Traffic Router container), we must re-run the ort script on them.
-sudo docker exec -it c23-atsec-01 /opt/ort/traffic_ops_ort.pl badass WARN 
https://c23-to-01.example.net superroot:supersecreterpassward
-sudo docker exec -it c23-atsec-02 /opt/ort/traffic_ops_ort.pl badass WARN 
https://c23-to-01.example.net superroot:supersecreterpassward
-sudo docker exec -it c23-atsmid-01 /opt/ort/traffic_ops_ort.pl badass WARN 
https://c23-to-01.example.net superroot:supersecreterpassward
-sudo docker exec -it c23-atsmid-02 /opt/ort/traffic_ops_ort.pl badass WARN 
https://c23-to-01.example.net superroot:supersecreterpassward
-```
-
-If everything was successful, you can test the CDN with:
-
-```bash
-# Test the Traffic Router DNS. Should return the DNS entries for the delivery 
services
-dig @c23-tr-01.example.net edge.ds1.c23.example.net
-
-# Test the DNS delivery service. Should return a 200
-curl -vs -o /dev/null -H "Host: edge.ds1.c23.example.net" 
"http://192.0.2.104/test.ism/manifest";
-
-# Test the HTTP delivery service. Should return a 302 and a 200.
-curl -Lvs -o /dev/null "http://tr.ds2.c23.example.net/test.ism/manifest";
-```
-
-
-Traffic Portal
--------------
-
-Traffic Portal is not required by the CDN to function, but provides a web 
interface to manage Traffic Ops.
-
-You can also create a standalone Traffic Portal Docker container and point it 
at a Traffic Ops not in Docker.
-
-You will need a Traffic Portal RPM, and a running Traffic Ops instance to 
point it to.
-
-The following commands will build a Docker image and container for Traffic 
Portal:
-
-
-```
-docker build --no-cache --rm --tag traffic_portal:3.0.x 
--build-arg=RPM=traffic_portal.rpm .
-
-docker run --name tp --hostname tp --net cdnet --publish 40443:443 --env 
TO_SERVER=my-traffic-ops-fqdn --env TO_PORT=443 --env DOMAIN=cdnet --detach -- 
traffic_portal:3.0.x
-```
diff --git a/infrastructure/docker/traffic_monitor/Dockerfile 
b/infrastructure/docker/traffic_monitor/Dockerfile
deleted file mode 100644
index 974a2a0098..0000000000
--- a/infrastructure/docker/traffic_monitor/Dockerfile
+++ /dev/null
@@ -1,42 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-############################################################
-# Dockerfile to build Traffic Monitor 1.6.0 container images
-# Based on CentOS 6.6
-############################################################
-
-# Example Build and Run:
-# docker build --rm --build-arg JDK=http://download.oracle.com/<path to jdk 
rpm> --build-arg RPM=<path to traffic_monitor rpm> --tag 
traffic_monitor:<version> traffic_monitor
-#
-# docker run --name my-traffic-monitor-0 --hostname my-traffic-monitor-0 
--net=cdnet --env TRAFFIC_OPS_URI=http://my-traffic-ops:3000 --env 
TRAFFIC_OPS_USER=superroot --env TRAFFIC_OPS_PASS=supersecreterpassward 
--detach traffic_monitor:1.6.0
-
-FROM centos/systemd
-MAINTAINER [email protected]
-# Default values for RPM -- override with `docker build --build-arg RPM=...'
-ARG RPM=traffic_monitor.rpm
-ADD $RPM /
-
-RUN yum install -y initscripts /$(basename $RPM)
-RUN rm /$(basename $RPM)
-
-# jq is used by the run.sh script
-RUN curl -L jq 
https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 > /usr/bin/jq
-RUN chmod +x /usr/bin/jq
-
-EXPOSE 80
-ADD run.sh /
-ENTRYPOINT /run.sh
diff --git a/infrastructure/docker/traffic_monitor/run.sh 
b/infrastructure/docker/traffic_monitor/run.sh
deleted file mode 100755
index d52e2dbaf7..0000000000
--- a/infrastructure/docker/traffic_monitor/run.sh
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Script for running the Dockerfile for Traffic Monitor.
-# The Dockerfile sets up a Docker image which can be used for any new 
container;
-# This script, which should be run when the container is run (it's the 
ENTRYPOINT), will configure the container.
-#
-# The following environment variables must be set (ordinarily by `docker run 
-e` arguments):
-# TRAFFIC_OPS_URI
-# TRAFFIC_OPS_USER
-# TRAFFIC_OPS_PASS
-
-# Check that env vars are set
-envvars=( TRAFFIC_OPS_URI TRAFFIC_OPS_USER TRAFFIC_OPS_PASS )
-for v in $envvars
-do
-       if [[ -z $$v ]]; then echo "$v is unset"; exit 1; fi
-done
-
-start() {
-       service traffic_monitor start
-       touch /opt/traffic_monitor/var/log/traffic_monitor.log
-       exec tail -f /opt/traffic_monitor/var/log/traffic_monitor.log
-}
-
-init() {
-       [ ! -z $IP ]            || IP=$(ip addr | grep 'global' | awk '{print 
$2}' | cut -f1 -d'/')
-       [ ! -z $DOMAIN ]        || DOMAIN="localdomain"
-       [ ! -z $CACHEGROUP ]    || CACHEGROUP="mid-east"
-       [ ! -z $TYPE ]          || TYPE="RASCAL"
-       [ ! -z $PROFILE ]       || PROFILE="RASCAL_CDN1"
-       [ ! -z $PHYS_LOCATION ] || PHYS_LOCATION="plocation-nyc-1"
-       [ ! -z $INTERFACE ]     || INTERFACE="eth0"
-       [ ! -z $NETMASK ]       || NETMASK="255.255.0.0"
-       [ ! -z $MTU ]           || MTU="9000"
-       [ ! -z $PORT ]          || PORT="80"
-       [ ! -z $GATEWAY ]       || GATEWAY="$(ip route | grep default | awk 
'{print $3}')"
-       [ ! -z $CDN ]           || CDN="cdn"
-       echo "IP: $IP"
-       echo "Domain: $DOMAIN"
-       echo "Cachegroup: $CACHEGROUP"
-       echo "Type: $TYPE"
-       echo "Profile: $PROFILE"
-       echo "PhysLocation: $PHYS_LOCATION"
-       echo "Interface: $INTERFACE"
-       echo "NetMask: $NETMASK"
-       echo "MTU: $MTU"
-       echo "Port: $PORT"
-       echo "Gateway: $GATEWAY"
-       echo "CDN: $CDN"
-       echo "Create Server: $CREATE_TO_SERVER"
-
-       mkdir -p /opt/traffic_monitor/conf
-       cat > /opt/traffic_monitor/conf/traffic_monitor.cfg <<- ENDOFMESSAGE
-               {
-                               "monitor_config_polling_interval_ms": 15000,
-                               "http_timeout_ms": 2000,
-                               "max_events": 200,
-                               "health_flush_interval_ms": 20,
-                               "stat_flush_interval_ms": 20,
-                               "log_location_event": 
"/opt/traffic_monitor/var/log/event.log",
-                               "log_location_error": 
"/opt/traffic_monitor/var/log/traffic_monitor.log",
-                               "log_location_warning": 
"/opt/traffic_monitor/var/log/traffic_monitor.log",
-                               "log_location_info": "null",
-                               "log_location_debug": "null",
-                               "serve_read_timeout_ms": 10000,
-                               "serve_write_timeout_ms": 10000,
-                               "static_file_dir": 
"/opt/traffic_monitor/static/",
-                               "cache_polling_protocol": "both"
-               }
-ENDOFMESSAGE
-
-       cat > /opt/traffic_monitor/conf/traffic_ops.cfg <<- ENDOFMESSAGE
-               {
-                               "username": "$TRAFFIC_OPS_USER",
-                               "password": "$TRAFFIC_OPS_PASS",
-                               "url": "$TRAFFIC_OPS_URI",
-                               "insecure": true,
-                               "cdnName": "$CDN",
-                               "httpListener": ":$PORT"
-                               }
-       ENDOFMESSAGE
-
-       TO_COOKIE="$(curl -v -s -k -X POST --data '{ 
"u":"'"$TRAFFIC_OPS_USER"'", "p":"'"$TRAFFIC_OPS_PASS"'" }' 
$TRAFFIC_OPS_URI/api/4.0/user/login 2>&1 | grep 'Set-Cookie' | sed -e 
's/.*mojolicious=\(.*\); expires.*/\1/')"
-       echo "Got Cookie: $TO_COOKIE"
-
-       if [ ! -z "$CREATE_TO_SERVER" ] ; then
-               echo "Creating Server in Traffic Ops!"
-               # curl -v -k -X POST -H "Cookie: mojolicious=$TO_COOKIE" -F 
"filename=Traffic_Monitor_Dockerfile_profile.traffic_ops" -F 
"profile_to_import=@/Traffic_Monitor_Dockerfile_profile.traffic_ops" 
$TRAFFIC_OPS_URI/profile/doImport
-
-               CACHEGROUP_ID="$( curl -s -k -X GET -H "Cookie: 
mojolicious=$TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/cachegroups.json | jq 
'.response | .[] | select(.name=='"\"$CACHEGROUP\""') | .id')"
-               echo "Got cachegroup ID: $CACHEGROUP_ID"
-
-               SERVER_TYPE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/types.json | jq '.response | 
.[] | select(.name=='"\"$TYPE\""') | .id')"
-               echo "Got server type ID: $SERVER_TYPE_ID"
-
-               SERVER_PROFILE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/profiles.json | jq '.response 
| .[] | select(.name=='"\"$PROFILE\""') | .id')"
-               echo "Got server profile ID: $SERVER_PROFILE_ID"
-
-               PHYS_LOCATION_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/phys_locations.json | jq 
'.response | .[] | select(.shortName=='"\"$PHYS_LOCATION\""') | .id')"
-               echo "Got phys location ID: $PHYS_LOCATION_ID"
-
-               CDN_ID="$(curl -s -k -X GET -H "Cookie: mojolicious=$TO_COOKIE" 
$TRAFFIC_OPS_URI/api/4.0/cdns.json | jq '.response | .[] | 
select(.name=='"\"$CDN\""') | .id')"
-               echo "Got cdn ID: $CDN_ID"
-
-               # Create Server in Traffic Ops
-               curl -v -k -X POST -H "Cookie: mojolicious=$TO_COOKIE" 
--data-urlencode "host_name=$HOSTNAME" --data-urlencode "domain_name=$DOMAIN" 
--data-urlencode "interface_name=$INTERFACE" --data-urlencode "ip_address=$IP" 
--data-urlencode "ip_netmask=$NETMASK" --data-urlencode "ip_gateway=$GATEWAY" 
--data-urlencode "interface_mtu=$MTU" --data-urlencode "cdn=$CDN_ID" 
--data-urlencode "cachegroup=$CACHEGROUP_ID" --data-urlencode 
"phys_location=$PHYS_LOCATION_ID" --data-urlencode "type=$SERVER_TYPE [...]
-
-               # Add Monitor IP to `allow_ip` Parameters
-               IP_ALLOW_PARAMS=$(curl -Lsk --cookie "mojolicious=$TO_COOKIE" 
$TRAFFIC_OPS_URI/api/4.0/parameters?name=allow_ip | jq '.response | .[] | .id, 
.value')
-               while IFS= read -r id; do
-                       IFS= read -r ipallow
-                       ipallow=$(echo ${ipallow} | sed -e 's/^"//' -e 's/"$//')
-                       IPALLOW_UPDATE_JSON="{\"id\": ${id}, \"value\": 
\"${ipallow},${IP}\"}"
-                       curl -Lsk --cookie "mojolicious=$TO_COOKIE" -H 
'Content-Type: application/json' -X PUT -d "$IPALLOW_UPDATE_JSON" 
$TRAFFIC_OPS_URI/api/4.0/parameters/${id}
-               done <<< "$IP_ALLOW_PARAMS"
-       fi
-
-       SERVER_ID="$(curl -s -k -X GET -H "Cookie: mojolicious=$TO_COOKIE" 
$TRAFFIC_OPS_URI/api/4.0/servers.json | jq '.response | .[] | 
select(.hostName=='"\"$HOSTNAME\""') | .id')"
-       echo "Got server ID: $SERVER_ID"
-
-       # Set Server to Online in Traffic Ops
-       curl -v -k -H "Content-Type: application/x-www-form-urlencoded" -H 
"Cookie: mojolicious=$TO_COOKIE" -X POST --data-urlencode "id=$SERVER_ID" 
--data-urlencode "status=ONLINE" $TRAFFIC_OPS_URI/server/updatestatus
-
-       echo "INITIALIZED=1" >> /etc/environment
-}
-
-source /etc/environment
-if [ -z "$INITIALIZED" ]; then init; fi
-start
diff --git a/infrastructure/docker/traffic_ops/Dockerfile 
b/infrastructure/docker/traffic_ops/Dockerfile
deleted file mode 100644
index e95c91da0d..0000000000
--- a/infrastructure/docker/traffic_ops/Dockerfile
+++ /dev/null
@@ -1,74 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-############################################################
-# Dockerfile to build Traffic Ops container images
-# Based on CentOS 7.2
-############################################################
-
-# Example Build and Run:
-# docker network create cdnet
-# docker build --rm --tag traffic_ops:1.7.0 
--build-arg=RPM=http://traffic-control-cdn.net/downloads/1.7.0/RELEASE-1.7.0/traffic_ops-1.7.0-3908.5b77f60f.x86_64.rpm
 traffic_ops
-#
-# docker run --name my-traffic-ops-mysql --hostname my-traffic-ops-mysql --net 
cdnet --env MYSQL_ROOT_PASSWORD=secretrootpass --detach mysql:5.5
-#
-# docker run --name my-traffic-ops --hostname my-traffic-ops --net cdnet 
--publish 443:443 --env MYSQL_IP=my-traffic-ops-mysql --env MYSQL_PORT=3306 
--env MYSQL_ROOT_PASS=secretrootpass --env 
MYSQL_TRAFFIC_OPS_PASS=supersecretpassword --env ADMIN_USER=superroot --env 
ADMIN_PASS=supersecreterpassward --env CERT_COUNTRY=US --env 
CERT_STATE=Colorado --env CERT_CITY=Denver --env CERT_COMPANY=Kabletown --env 
TRAFFIC_VAULT_PASS=marginallylesssecret --env DOMAIN=cdnet --detach 
traffic_ops:1.5.1
-
-FROM centos/systemd
-MAINTAINER [email protected]
-
-RUN yum install -y 
https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
-RUN yum install -y initscripts # needed for service command
-RUN yum install -y epel-release # needed for perl-Crypt-ScryptKDF
-RUN yum install -y perl-Crypt-ScryptKDF
-RUN yum install -y perl cpanminus perl-Test-CPAN-Meta
-RUN cpanm Carton
-RUN yum install -y perl-DBIx-Connector
-# needed for llvm-toolset-7-clang, which is needed for 
postgresql13-devel-13.2-1PGDG, required by TO rpm
-RUN yum install -y centos-release-scl-rh
-
-# Override RPM arg to use a different one using --build-arg RPM=...  Can be 
local file or http://...
-ARG RPM=traffic_ops.rpm
-ADD $RPM /
-RUN yum install -y /$(basename $RPM)
-
-# once installed, remove rpm to lower image size
-RUN rm /$(basename $RPM)
-
-# RUN export 
PERL5LIB=/opt/traffic_ops/app/local/lib/perl5/:/opt/traffic_ops/install/lib/ \
-#      && export TERM=xterm \
-#      && export USER=root \
-#      && yes | /opt/traffic_ops/install/bin/build_trafficops_perl_library -i
-
-RUN export 
PERL5LIB=/opt/traffic_ops/app/local/lib/perl5/:/opt/traffic_ops/install/lib/ \
-       && export TERM=xterm \
-       && export USER=root 
-
-# \todo add Drive Letters to postinstall input
-# RUN sed -i -- 's/"value": 
"b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y"/"value": "0"/g' 
/opt/traffic_ops/install/data/profiles/profile.trafficserver_edge.traffic_ops
-# RUN sed -i -- 's/"value": 
"b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y"/"value": "0"/g' 
/opt/traffic_ops/install/data/profiles/profile.trafficserver_mid.traffic_ops
-
-RUN echo "{\"user\": \"riakuser\",\"password\": \"$TRAFFIC_VAULT_PASS\"}" > 
/opt/traffic_ops/app/conf/production/riak.conf
-
-RUN cp /opt/traffic_ops/app/bin/traffic_ops_golang{,.new} && mv 
/opt/traffic_ops/app/bin/traffic_ops_golang{.new,} # fixes an 'Invalid 
Argument' bug; TODO diagnose, fix, & remove
-
-EXPOSE 443
-WORKDIR /opt/traffic_ops/app
-ENV MOJO_MODE production
-ADD profile.origin.traffic_ops /
-ADD run.sh /
-CMD /run.sh
diff --git a/infrastructure/docker/traffic_ops/Dockerfile_psql 
b/infrastructure/docker/traffic_ops/Dockerfile_psql
deleted file mode 100644
index b03d339567..0000000000
--- a/infrastructure/docker/traffic_ops/Dockerfile_psql
+++ /dev/null
@@ -1,43 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-############################################################
-# Dockerfile to initialized Traffic Ops Database container 
-# Based on CentOS 7.2
-############################################################
-
-FROM centos/systemd
-
-RUN yum install -y 
https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
-
-RUN yum -y install \
-  postgresql13 \
-  nmap-ncat \
-  cpanminus && \
-  yum clean all
-
-ENV POSTGRES_HOME $POSTGRES_HOME
-ENV PGPASSWORD $PGPASSWORD 
-ENV POSTGRES_PASSWORD $POSTGRES_PASSWORD
-ENV DB_USERNAME $DB_USERNAME
-ENV DB_NAME $DB_NAME
-ENV DB_USER_PASS $DB_USER_PASS 
-ENV DB_SERVER $DB_SERVER
-ENV DB_PORT $DB_PORT
-
-ADD dbInit.sh /
-CMD /dbInit.sh
diff --git a/infrastructure/docker/traffic_ops/dbInit.sh 
b/infrastructure/docker/traffic_ops/dbInit.sh
deleted file mode 100755
index 80156f53c7..0000000000
--- a/infrastructure/docker/traffic_ops/dbInit.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-############################################################
-# Script for creating the database user account for traffic
-# ops. 
-# Used while the Docker Image is initializing itself
-############################################################
-
-while ! nc $DB_SERVER $DB_PORT </dev/null; do # &>/dev/null; do
-        echo "waiting for $DB_SERVER:$DB_PORT"
-        sleep 3
-done
-psql -h $DB_SERVER -U postgres -c "CREATE USER $DB_USERNAME WITH ENCRYPTED 
PASSWORD '$DB_USER_PASS'"
-createdb $DB_NAME -h $DB_SERVER -U postgres --owner $DB_USERNAME
diff --git a/infrastructure/docker/traffic_ops/docker-compose.yml 
b/infrastructure/docker/traffic_ops/docker-compose.yml
deleted file mode 100644
index a46388a863..0000000000
--- a/infrastructure/docker/traffic_ops/docker-compose.yml
+++ /dev/null
@@ -1,89 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-# To use this compose you should first build Traffic Ops and then copy the RPM 
to :
-#
-# trafficcontrol/infrastructure/docker/traffic_ops/traffic_ops.rpm
-#
-# You should then just be able to go to the directory 
trafficcontrol/infrastructure/docker/traffic_ops/
-# and type 'docker-compose up -d'
-#
-# You should then be able to go to https://localhost and test Traffic Ops or 
the go api.
-# if you make code changes to the Go proxy then you just need to rebuild it 
and then
-# restart Traffic Ops:
-#
-# bash -c "clear && docker exec trafficops_to_server_1 /bin/bash 
/etc/init.d/traffic_ops /bin/bash /etc/init.d/traffic_ops start; sleep 5"
-#
-
----
-version: '3.8'
-
-volumes:
-  trafficcontrol:
-  traffic_ops:
-  conf:
-
-services:
-  db:
-    image: postgres:13.2
-    environment:
-      POSTGRES_PASSWORD: secretrootpass
-    ports: 
-      - "5432:5432"
-
-  db_init:
-    environment:
-      POSTGRES_HOME: /usr/pgsql-13
-      PGPASSWORD: secretrootpass
-      POSTGRES_PASSWORD: secretrootpass
-      DB_USERNAME: traffic_ops
-      DB_NAME: traffic_ops
-      DB_USER_PASS: twelve
-      DB_SERVER: db
-      DB_PORT: 5432
-    build:
-      context: .
-      dockerfile: Dockerfile_psql
-    depends_on: 
-      - db
-
-  to_server:
-    environment:
-      DB_SERVER: db
-      DB_PORT: 5432
-      DB_NAME: traffic_ops
-      DB_ROOT_PASS: null
-      DB_USER_PASS: twelve
-      DB_USER: traffic_ops
-      ADMIN_USER: superroot
-      ADMIN_PASS: passward
-      CERT_COUNTRY: US
-      CERT_STATE: Colorado
-      CERT_CITY: Denver
-      CERT_COMPANY: Kabletown
-      TRAFFIC_VAULT_PASS: tvsecret
-      DOMAIN: trafficops_default
-    ports: 
-      - "443:443"
-    build:
-      context: .
-      args:
-        RPM: traffic_ops.rpm 
-    volumes:
-      - 
../../../traffic_ops/traffic_ops_golang/traffic_ops_golang:/opt/traffic_ops/app/bin/traffic_ops_golang
-    depends_on:
-      - db_init
diff --git a/infrastructure/docker/traffic_ops/profile.origin.traffic_ops 
b/infrastructure/docker/traffic_ops/profile.origin.traffic_ops
deleted file mode 100644
index f655f89c2e..0000000000
--- a/infrastructure/docker/traffic_ops/profile.origin.traffic_ops
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-    "parameters": [
-        {
-            "config_file": "CRConfig.json",
-            "name": "domain_name",
-            "value": "{{.Domain}}"
-        },
-        {
-            "config_file": "parent.config",
-            "name": "weight",
-            "value": "1.0"
-        }
-    ],
-    "profile": {
-        "description": "Multi site origin profile 1",
-        "name": "ORG1_CDN1"
-    }
-}
diff --git a/infrastructure/docker/traffic_ops/run.sh 
b/infrastructure/docker/traffic_ops/run.sh
deleted file mode 100755
index 7c9c3c19bf..0000000000
--- a/infrastructure/docker/traffic_ops/run.sh
+++ /dev/null
@@ -1,292 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-# 
-#   http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Script for running the Dockerfile for Traffic Ops.
-# The Dockerfile sets up a Docker image which can be used for any new Traffic 
Ops container;
-# This script, which should be run when the container is run (it's the 
ENTRYPOINT), will configure the container.
-#
-# The following environment variables must be set, ordinarily by `docker run 
-e` arguments:
-# DB_SERVER
-# DB_PORT
-# DB_ROOT_PASS
-# DB_USER
-# DB_USER_PASS
-# DB_NAME
-# ADMIN_USER
-# ADMIN_PASS
-# CERT_COUNTRY
-# CERT_STATE
-# CERT_CITY
-# CERT_COMPANY
-# DOMAIN
-
-# TODO:  Unused -- should be removed?  TRAFFIC_VAULT_PASS
-
-# Check that env vars are set
-envvars=( DB_SERVER DB_PORT DB_ROOT_PASS DB_USER DB_USER_PASS ADMIN_USER 
ADMIN_PASS CERT_COUNTRY CERT_STATE CERT_CITY CERT_COMPANY DOMAIN)
-for v in $envvars
-do
-       if [[ -z $$v ]]; then echo "$v is unset"; exit 1; fi
-done
-
-start() {
-       service traffic_ops start
-       exec tail -f /var/log/traffic_ops/traffic_ops.log
-}
-
-init() {
-       local postinstall_input_file="postinstall-input.json"
-       cat > "$postinstall_input_file" <<- ENDOFMESSAGE
-{
-  "/opt/traffic_ops/app/conf/production/database.conf":[
-    {
-      "Database type":"Pg",
-      "config_var":"type"
-    },
-    {
-      "Database name":"$DB_NAME",
-      "config_var":"dbname"
-    },
-    {
-      "Database server hostname IP or FQDN":"$DB_SERVER",
-      "config_var":"hostname"
-    },
-    {
-      "Database port number":"$DB_PORT",
-      "config_var":"port"
-    },
-    {
-      "Traffic Ops database user":"$DB_USER",
-      "config_var":"user"
-    },
-    {
-      "Traffic Ops database password":"$DB_USER_PASS",
-      "config_var":"password",
-      "hidden":"1"
-    }
-  ],
-  "/opt/traffic_ops/app/db/dbconf.yml":[
-    {
-      "Database server root (admin) user":"postgres",
-      "config_var":"pgUser"
-    },
-    {
-      "Database server admin password":"$DB_ROOT_PASS",
-      "config_var":"pgPassword",
-      "hidden":"1"
-    },
-    {
-      "Download Maxmind Database?":"yes",
-      "config_var":"maxmind"
-    }
-  ],
-  "/opt/traffic_ops/app/conf/cdn.conf":[
-    {
-      "Generate a new secret?":"yes",
-      "config_var":"genSecret"
-    },
-    {
-      "Port to serve on?": "443",
-      "config_var": "port"
-    },
-    {
-      "Number of workers?": "12",
-      "config_var":"workers"
-    },
-    {
-      "Traffic Ops url?": "https://$HOSTNAME";,
-      "config_var": "base_url"
-    },
-    {
-      "Number of secrets to keep?":"1",
-      "config_var":"keepSecrets"
-    }
-  ],
-  "/opt/traffic_ops/app/conf/ldap.conf":[
-    {
-      "Do you want to set up LDAP?":"no",
-      "config_var":"setupLdap"
-    },
-    {
-      "LDAP server hostname":"",
-      "config_var":"host"
-    },
-    {
-      "LDAP Admin DN":"",
-      "config_var":"admin_dn"
-    },
-    {
-      "LDAP Admin Password":"",
-      "config_var":"admin_pass",
-      "hidden":"1"
-    },
-    {
-      "LDAP Search Base":"",
-      "config_var":"search_base"
-    }
-  ],
-  "/opt/traffic_ops/install/data/json/users.json":[
-    {
-      "Administration username for Traffic Ops":"$ADMIN_USER",
-      "config_var":"tmAdminUser"
-    },
-    {
-      "Password for the admin user":"$ADMIN_PASS",
-      "config_var":"tmAdminPw",
-      "hidden":"1"
-    }
-  ],
-  "/opt/traffic_ops/install/data/profiles/":[
-    {
-      "Add custom profiles?":"no",
-      "config_var":"custom_profiles"
-    }
-  ],
-  "/opt/traffic_ops/install/data/json/openssl_configuration.json":[
-    {
-      "Do you want to generate a certificate?":"yes",
-      "config_var":"genCert"
-    },
-    {
-      "Country Name (2 letter code)":"$CERT_COUNTRY",
-      "config_var":"country"
-    },
-    {
-      "State or Province Name (full name)":"$CERT_STATE",
-      "config_var":"state"
-    },
-    {
-      "Locality Name (eg, city)":"$CERT_CITY",
-      "config_var":"locality"
-    },
-    {
-      "Organization Name (eg, company)":"$CERT_COMPANY",
-      "config_var":"company"
-    },
-    {
-      "Organizational Unit Name (eg, section)":"",
-      "config_var":"org_unit"
-    },
-    {
-      "Common Name (eg, your name or your server's hostname)":"$HOSTNAME",
-      "config_var":"common_name"
-    },
-    {
-      "RSA Passphrase":"passphrase",
-      "config_var":"rsaPassword",
-      "hidden":"1"
-    }
-  ],
-  "/opt/traffic_ops/install/data/json/profiles.json":[
-    {
-      "Traffic Ops url":"https://$HOSTNAME";,
-      "config_var":"tm.url"
-    },
-    {
-      "Human-readable CDN Name.  (No whitespace, please)":"cdn",
-      "config_var":"cdn_name"
-    },
-    {
-      "Health Polling Interval (milliseconds)":"8000",
-      "config_var":"health_polling_int"
-    },
-    {
-      "DNS sub-domain for which your CDN is authoritative":"$HOSTNAME.$DOMAIN",
-      "config_var":"dns_subdomain"
-    },
-    {
-      "TLD SOA admin":"traffic_ops",
-      "config_var":"soa_admin"
-    },
-    {
-      "TrafficServer Drive Prefix":"/dev/ram",
-      "config_var":"driver_prefix"
-    },
-    {
-      "TrafficServer RAM Drive Prefix":"/dev/ram",
-      "config_var":"ram_drive_prefix"
-    },
-    {
-      "TrafficServer RAM Drive Letters (comma separated)":"1",
-      "config_var":"ram_drive_letters"
-    },
-    {
-      "Health Threshold Load Average":"25",
-      "config_var":"health_thresh_load_avg"
-    },
-    {
-      "Health Threshold Available Bandwidth in Kbps":"1750000",
-      "config_var":"health_thresh_kbps"
-    },
-    {
-      "Traffic Server Health Connection Timeout (milliseconds)":"2000",
-      "config_var":"health_connect_timeout"
-    }
-  ]
-}
-       ENDOFMESSAGE
-
-       # TODO determine if term, user are necessary
-       export TERM=xterm && export USER=root && 
/opt/traffic_ops/install/bin/postinstall -cfile "$postinstall_input_file"
-
-       # Only listen on IPv4, not IPv6, because Docker doesn't provide a v6 
interface by default. See 
http://mojolicious.org/perldoc/Mojo/Server/Daemon#listen
-       sed -i -e 's#https://\[::\]#https://127\.0\.0\.1#' 
/opt/traffic_ops/app/conf/cdn.conf
-       service traffic_ops restart
-
-       TRAFFIC_OPS_URI="https://localhost";
-
-       TMP_TO_COOKIE="$(curl -v -s -k -X POST --data '{ "u":"'"$ADMIN_USER"'", 
"p":"'"$ADMIN_PASS"'" }' $TRAFFIC_OPS_URI/api/4.0/user/login 2>&1 | grep 
'Set-Cookie' | sed -e 's/.*mojolicious=\(.*\); expires.*/\1/')"
-       echo "Got cookie: $TMP_TO_COOKIE"
-
-       TMP_DOMAIN=$DOMAIN
-       sed -i -- "s/{{.Domain}}/$TMP_DOMAIN/g" /profile.origin.traffic_ops
-       echo "Got domain: $TMP_DOMAIN"
-
-       echo "Importing origin"
-       curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" -F 
"filename=profile.origin.traffic_ops" -F 
"profile_to_import=@/profile.origin.traffic_ops" 
$TRAFFIC_OPS_URI/profile/doImport
-
-       curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
--data-urlencode "division.name=East" $TRAFFIC_OPS_URI/division/create
-       TMP_DIVISION_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/region/add | grep --color=never 
-oE "<option value=\"[0-9]+\">East</option>" | grep --color=never -oE "[0-9]+")"
-       echo "Got division ID: $TMP_DIVISION_ID"
-
-       curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
--data-urlencode "region.name=Eastish" --data-urlencode 
"region.division_id=$TMP_DIVISION_ID" $TRAFFIC_OPS_URI/region/create
-       TMP_REGION_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/regions.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="Eastish"]; print match[0]')"
-       echo "Got region ID: $TMP_REGION_ID"
-
-       TMP_CACHEGROUP_TYPE="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/types.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="MID_LOC"]; print match[0]')"
-       echo "Got cachegroup type ID: $TMP_CACHEGROUP_TYPE"
-
-       curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
--data-urlencode "cg_data.name=mid-east" --data-urlencode 
"cg_data.short_name=east" --data-urlencode "cg_data.latitude=0" 
--data-urlencode "cg_data.longitude=0" --data-urlencode 
"cg_data.parent_cachegroup_id=-1" --data-urlencode 
"cg_data.type=$TMP_CACHEGROUP_TYPE" $TRAFFIC_OPS_URI/cachegroup/create
-       TMP_CACHEGROUP_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/cachegroups.json | python 
-c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="mid-east"]; print match[0]')"
-       echo "Got cachegroup ID: $TMP_CACHEGROUP_ID"
-
-       TMP_CACHEGROUP_EDGE_TYPE="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/types.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="EDGE_LOC"]; print match[0]')"
-       echo "Got cachegroup type ID: $TMP_CACHEGROUP_EDGE_TYPE"
-
-       curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
--data-urlencode "cg_data.name=edge-east" --data-urlencode 
"cg_data.short_name=eeast" --data-urlencode "cg_data.latitude=0" 
--data-urlencode "cg_data.longitude=0" --data-urlencode 
"cg_data.parent_cachegroup_id=$TMP_CACHEGROUP_ID" --data-urlencode 
"cg_data.type=$TMP_CACHEGROUP_EDGE_TYPE" $TRAFFIC_OPS_URI/cachegroup/create
-       TMP_CACHEGROUP_EDGE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/cachegroups.json | python 
-c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="edge-east"]; print match[0]')"
-       echo "Got cachegroup edge ID: $TMP_CACHEGROUP_EDGE_ID"
-
-       curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
--data-urlencode "location.name=plocation-nyc-1" --data-urlencode 
"location.short_name=nyc" --data-urlencode "location.address=1 Main Street" 
--data-urlencode "location.city=nyc" --data-urlencode "location.state=NY" 
--data-urlencode "location.zip=12345" --data-urlencode "location.poc=" 
--data-urlencode "location.phone=" --data-urlencode "[email protected]" 
--data-urlencode "location.comments=" --data-urlencode "location.re [...]
-
-       echo "INITIALIZED=1" >> /etc/environment
-}
-
-source /etc/environment
-if [ -z "$INITIALIZED" ]; then init; fi
-start
diff --git a/infrastructure/docker/traffic_router/Dockerfile 
b/infrastructure/docker/traffic_router/Dockerfile
deleted file mode 100644
index d34c6e8fb2..0000000000
--- a/infrastructure/docker/traffic_router/Dockerfile
+++ /dev/null
@@ -1,59 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-############################################################
-# Dockerfile to build Traffic Router 1.4 container images
-# Based on CentOS 6.6
-############################################################
-
-# Example Build and Run:
-# docker build --rm --tag traffic_router:1.4 Traffic_Router
-# docker build --rm --build-arg JDK=http://download.oracle.com/<path to jdk 
rpm> --build-arg RPM=<path to traffic_router rpm> --tag 
traffic_router:<version> traffic_router
-
-# docker run --name my-traffic-router --hostname my-traffic-router --net cdnet 
--env TRAFFIC_OPS_URI=http://my-traffic-ops:3000 --env 
TRAFFIC_OPS_USER=superroot --env TRAFFIC_OPS_PASS=supersecreterpassward --env 
TRAFFIC_MONITORS="my-traffic-monitor-0:80;my-traffic-monitor-1:80" --env 
ORIGIN_URI="http://my-hotair.cdnet"; --detach traffic_router:1.4
-
-FROM centos:7
-MAINTAINER [email protected]
-
-# Default values for TMCAT RPM and RPM -- override with `docker build 
--build-arg JDK=...'
-ARG RPM=traffic_router.rpm
-ARG TMCAT=tomcat.rpm
-ARG TC_REPO=traffic-control.repo
-ADD $TMCAT /
-ADD $RPM /
-ADD $TC_REPO /etc/yum.repos.d/
-ADD starttr.sh /
-ADD shutdowntr.sh /
-
-### Common for all sub-component builds
-RUN    yum -y install \
-               epel-release \
-               git \
-               rpm-build && \
-       yum -y clean all
-
-
-RUN yum install -y wget tar unzip perl-JSON perl-WWW-Curl which
-RUN yum search tomcat-native
-RUN yum search jdk
-
-
-RUN yum install -y /$TMCAT /$RPM
-#RUN rm /$(basename $JDK) /$(basename $RPM)
-
-EXPOSE 53 80 3333
-ADD run.sh /
-ENTRYPOINT /run.sh
diff --git a/infrastructure/docker/traffic_router/run.sh 
b/infrastructure/docker/traffic_router/run.sh
deleted file mode 100755
index e625c14a78..0000000000
--- a/infrastructure/docker/traffic_router/run.sh
+++ /dev/null
@@ -1,111 +0,0 @@
-#!/bin/bash
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Script for running the Dockerfile for Traffic Router.
-# The Dockerfile sets up a Docker image which can be used for any new 
container;
-# This script, which should be run when the container is run (it's the 
ENTRYPOINT), will configure the container.
-#
-# The following environment variables must be set (ordinarily by `docker run 
-e` arguments):
-# TRAFFIC_OPS_URI
-# TRAFFIC_OPS_USER
-# TRAFFIC_OPS_PASS
-# TRAFFIC_MONITORS # list of semicolon-delimited FQDN:port monitors. E.g. 
`monitor.foo.com:80;monitor2.bar.org:80`
-# ORIGIN_URI # origin server (e.g. hotair), used to create a delivery service
-
-start() {
-       ./starttr.sh
-       touch /opt/traffic_router/var/log/traffic_router.log
-       exec tail -f /opt/traffic_router/var/log/traffic_router.log
-}
-
-init() {
-       TMP_TO_COOKIE="$(curl -v -s -k -X POST --data '{ 
"u":"'"$TRAFFIC_OPS_USER"'", "p":"'"$TRAFFIC_OPS_PASS"'" }' 
$TRAFFIC_OPS_URI/api/4.0/user/login 2>&1 | grep 'Set-Cookie' | sed -e 
's/.*mojolicious=\(.*\); expires.*/\1/')"
-       echo "Got Cookie: $TMP_TO_COOKIE"
-
-#  TMP_IP="$(ifconfig | grep -oE "inet 
addr:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | grep -v '127.0.0.1' | 
cut -c11-)"
-#      TMP_DOMAIN="$(grep -E "[:blank:]+.+\..+$" /etc/hosts | head -1 | rev | 
cut -d'.' -f2- --complement | rev)"
-#      TMP_GATEWAY="$(route -n | grep -E "^0\.0\.0\.0[[:space:]]" | cut -f1 
-d" " --complement | sed -e 's/^[ \t]*//' | cut -f1 -d" ")"
-       TMP_IP=$IP
-       TMP_DOMAIN=$DOMAIN
-       TMP_GATEWAY=$GATEWAY
-
-       TMP_CACHEGROUP_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/cachegroups.json | python 
-c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="mid-east"]; print match[0]')"
-       echo "Got cachegroup ID: $TMP_CACHEGROUP_ID"
-
-       TMP_SERVER_TYPE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/types.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="CCR"]; print match[0]')"
-       echo "Got server type ID: $TMP_SERVER_TYPE_ID"
-
-       TMP_SERVER_PROFILE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/profiles.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="CCR_CDN"]; print match[0]')"
-       echo "Got server profile ID: $TMP_SERVER_PROFILE_ID"
-
-       TMP_PHYS_LOCATION_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/phys_locations.json | 
python -c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="plocation-nyc-1"]; print match[0]')"
-       echo "Got phys location ID: $TMP_PHYS_LOCATION_ID"
-
-       TMP_CDN_ID="$(curl -s -k -X GET -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
$TRAFFIC_OPS_URI/api/4.0/cdns.json | python -c 'import 
json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in obj["response"] if 
x["name"]=="cdn"]; print match[0]')"
-       echo "Got cdn ID: $TMP_CDN_ID"
-
-       curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
--data-urlencode "host_name=$HOSTNAME" --data-urlencode 
"domain_name=$TMP_DOMAIN" --data-urlencode "interface_name=eth0" 
--data-urlencode "ip_address=$TMP_IP" --data-urlencode "ip_netmask=255.255.0.0" 
--data-urlencode "ip_gateway=$TMP_GATEWAY" --data-urlencode 
"interface_mtu=9000" --data-urlencode "cdn=$TMP_CDN_ID" --data-urlencode 
"cachegroup=$TMP_CACHEGROUP_ID" --data-urlencode 
"phys_location=$TMP_PHYS_LOCATION_ID" --data-urle [...]
-
-       TMP_SERVER_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/servers.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["hostName"]=="'"$HOSTNAME"'"]; print match[0]')"
-       echo "Got server ID: $TMP_SERVER_ID"
-
-       curl -v -k -H "Cookie: mojolicious=$TMP_TO_COOKIE" -X POST 
--data-urlencode "id=$TMP_SERVER_ID" --data-urlencode "status=ONLINE" 
$TRAFFIC_OPS_URI/server/updatestatus
-
-       TMP_DELIVERY_SERVICE_TYPE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/types.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="DNS"]; print match[0]')"
-       echo "Got delivery service type ID: $TMP_DELIVERY_SERVICE_TYPE_ID"
-
-       curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
--data-urlencode "ds.xml_id=c2-service" --data-urlencode "ds.display_name=C2 
Service" --data-urlencode "ds.cdn_id=$TMP_CDN_ID" --data-urlencode 
"ds.type=$TMP_DELIVERY_SERVICE_TYPE_ID"  --data-urlencode "ds.protocol=0" 
--data-urlencode "ds.dscp=0" --data-urlencode "ds.signed=0" --data-urlencode 
"ds.qstring_ignore=0" --data-urlencode "ds.geo_limit=0" --data-urlencode 
"ds.http_bypass_fqdn=" --data-urlencode "ds.initial_dispersion=1 [...]
-
-       TMP_DELIVERY_SERVICE_LIVE_TYPE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/types.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="DNS_LIVE_NATNL"]; print match[0]')"
-       echo "Got delivery service live type ID: 
$TMP_DELIVERY_SERVICE_LIVE_TYPE_ID"
-
-       curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
--data-urlencode "ds.xml_id=ds2-live" --data-urlencode "ds.display_name=DS2 
Live" --data-urlencode "ds.cdn_id=$TMP_CDN_ID" --data-urlencode 
"ds.type=$TMP_DELIVERY_SERVICE_LIVE_TYPE_ID"  --data-urlencode "ds.protocol=0" 
--data-urlencode "ds.dscp=0" --data-urlencode "ds.signed=0" --data-urlencode 
"ds.qstring_ignore=0" --data-urlencode "ds.geo_limit=0" --data-urlencode 
"ds.http_bypass_fqdn=" --data-urlencode "ds.initial_dispersion= [...]
-
-       TMP_DELIVERY_SERVICE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/deliveryservices.json | 
python -c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["xmlId"]=="c2-service"]; print match[0]')"
-       echo "Got delivery ID: $TMP_DELIVERY_SERVICE_ID"
-
-       TMP_DELIVERY_SERVICE_HTTP_TYPE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/types.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="HTTP"]; print match[0]')"
-       echo "Got delivery service http type ID: 
$TMP_DELIVERY_SERVICE_HTTP_TYPE_ID"
-
-       curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
--data-urlencode "ds.xml_id=c3-service" --data-urlencode "ds.display_name=C3 
Service" --data-urlencode "ds.cdn_id=$TMP_CDN_ID" --data-urlencode 
"ds.type=$TMP_DELIVERY_SERVICE_HTTP_TYPE_ID"  --data-urlencode "ds.protocol=0" 
--data-urlencode "ds.dscp=0" --data-urlencode "ds.signed=0" --data-urlencode 
"ds.qstring_ignore=0" --data-urlencode "ds.geo_limit=0" --data-urlencode 
"ds.http_bypass_fqdn=" --data-urlencode "ds.initial_dispers [...]
-
-       TMP_DELIVERY_SERVICE_HTTP_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/deliveryservices.json | 
python -c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["xmlId"]=="c3-service"]; print match[0]')"
-       echo "Got delivery http ID: $TMP_DELIVERY_SERVICE_HTTP_ID"
-
-
-       TMP_EDGES="$(curl -s -k -X GET -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
$TRAFFIC_OPS_URI/api/4.0/servers.json | python -c 'import 
json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in obj["response"] if 
x["type"]=="EDGE"]; print "\n".join(match)')"
-       echo "Got edges: $TMP_EDGES"
-       TMP_EDGE_STR="$(echo "$TMP_EDGES" | xargs -I {} echo 'serverid_{}=on&' 
| tr -d '\n' | rev | cut -c 2- | rev)"
-       echo "Got edge str: $TMP_EDGE_STR"
-
-       curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" --data 
$TMP_EDGE_STR $TRAFFIC_OPS_URI/dss/$TMP_DELIVERY_SERVICE_ID/update
-       curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" --data 
$TMP_EDGE_STR $TRAFFIC_OPS_URI/dss/$TMP_DELIVERY_SERVICE_HTTP_ID/update
-
-       sed -i -- "s/# 
traffic_monitor.bootstrap.hosts=some-traffic_monitor.company.net:80;/traffic_monitor.bootstrap.hosts=$TRAFFIC_MONITORS/g"
 /opt/traffic_router/conf/traffic_monitor.properties
-
-       sed -i -- 
"s/traffic_ops.username=admin/traffic_ops.username=$TRAFFIC_OPS_USER/g" 
/opt/traffic_router/conf/traffic_ops.properties
-       sed -i -- 
"s/traffic_ops.password=FIXME/traffic_ops.password=$TRAFFIC_OPS_PASS/g" 
/opt/traffic_router/conf/traffic_ops.properties
-
-       curl -k -v -X PUT --cookie "mojolicious=$TMP_TO_COOKIE" 
$TRAFFIC_OPS_URI/api/4.0/snapshot/cdn
-
-       echo "INITIALIZED=1" >> /etc/environment
-}
-
-source /etc/environment
-if [ -z "$INITIALIZED" ]; then init; fi
-start
diff --git a/infrastructure/docker/traffic_router/shutdowntr.sh 
b/infrastructure/docker/traffic_router/shutdowntr.sh
deleted file mode 100755
index 1bd8b7cce4..0000000000
--- a/infrastructure/docker/traffic_router/shutdowntr.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/bash
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Script for running the Dockerfile for Traffic Router.
-# The Dockerfile sets up a Docker image which can be used for any new 
container;
-# This script, which should be run when the container is run (it's the 
ENTRYPOINT), will configure the container.
-#
-# The following environment variables must be set (ordinarily by `docker run 
-e` arguments):
-# TRAFFIC_OPS_URI
-# TRAFFIC_OPS_USER
-# TRAFFIC_OPS_PASS
-# TRAFFIC_MONITORS # list of semicolon-delimited FQDN:port monitors. E.g. 
`monitor.foo.com:80;monitor2.bar.org:80`
-# ORIGIN_URI # origin server (e.g. hotair), used to create a delivery service
-
-export JAVA_HOME="$(command -v java | xargs realpath | xargs dirname)/.."
-export CATALINA_PID=/opt/traffic_router/temp/tomcat.pid
-export CATALINA_HOME=/opt/tomcat
-export CATALINA_BASE=/opt/traffic_router
-export CATALINA_OUT=/opt/tomcat/logs/catalina.log
-source /opt/traffic_router/conf/startup.properties
-/opt/tomcat/bin/shutdown.sh
diff --git a/infrastructure/docker/traffic_router/starttr.sh 
b/infrastructure/docker/traffic_router/starttr.sh
deleted file mode 100755
index eae4f9befc..0000000000
--- a/infrastructure/docker/traffic_router/starttr.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Script for running the Dockerfile for Traffic Router.
-# The Dockerfile sets up a Docker image which can be used for any new 
container;
-# This script simulates the systemd unit file that is used to start traffic 
router on 
-# servers in the real world, but in Docker containers systemd is disabled. 
-# Therefore it is important to keep this script up to date with any changes 
that are
-# made to traffic_router/build/build_rpm.sh and traffic_router/build/pom.xml
-
-export JAVA_HOME="$(command -v java | xargs realpath | xargs dirname)/.."
-export CATALINA_PID=/opt/traffic_router/temp/tomcat.pid
-export CATALINA_HOME=/opt/tomcat
-export CATALINA_BASE=/opt/traffic_router
-export CATALINA_OUT=/opt/tomcat/logs/catalina.log
-export CATALINA_OPTS="\
-  -server -Xms512m -Xmx1g \
-  -Dlog4j.configurationFile=$CATALINA_BASE/conf/log4j2.xml \
-  -Djava.library.path=/usr/lib64 \
-  
-Dorg.apache.catalina.connector.Response.ENFORCE_ENCODING_IN_GET_WRITER=false \
-  -XX:+UseG1GC \
-  -XX:+UnlockExperimentalVMOptions \
-  -XX:InitiatingHeapOccupancyPercent=30"
-export JAVA_OPTS="\
-  -Djava.awt.headless=true \
-  -Djava.security.egd=file:/dev/./urandom"
-
-ulimit -c unlimited
-/opt/tomcat/bin/startup.sh
diff --git a/infrastructure/docker/traffic_server_edge/Dockerfile 
b/infrastructure/docker/traffic_server_edge/Dockerfile
deleted file mode 100644
index 8f8a0b83f7..0000000000
--- a/infrastructure/docker/traffic_server_edge/Dockerfile
+++ /dev/null
@@ -1,279 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-############################################################
-# Dockerfile to build Traffic Server container images
-#   as Edges for Traffic Control 1.4
-# Based on CentOS 6.6
-############################################################
-
-# For cache, you may either use (RAM or disk) block devices or disk directories
-# To use RAM block devices, pass them as /dev/ram0 and /dev/ram1 via `docker 
run --device`
-# To use disk directories, simply don't pass devices, and the container will 
configure Traffic Server for directories
-
-# Block devices may be created on the native machine with, for example, 
`modprobe brd`.
-# The recommended minimum size for each block devices is 1G.
-# For example, `sudo modprobe brd rd_size=1048576 rd_nr=2`
-
-# Example Build and Run:
-#
-# docker build --rm --tag traffic_server_edge:1.4 Traffic_Server_Edge
-#
-# docker run --name my-edge-0 --hostname my-edge-0 --net cdnet --device 
/dev/ram0:/dev/ram0 --device /dev/ram1:/dev/ram1 --env 
TRAFFIC_OPS_URI=http://my-traffic-ops:3000 --env TRAFFIC_OPS_USER=superroot 
--env TRAFFIC_OPS_PASS=supersecreterpassward --detach traffic_server_edge:1.4
-#
-# OR
-#
-# docker run --name my-edge-0 --hostname my-edge-0 --net cdnet --env 
TRAFFIC_OPS_URI=http://my-traffic-ops:3000 --env TRAFFIC_OPS_USER=superroot 
--env TRAFFIC_OPS_PASS=supersecreterpassward --detach traffic_server_edge:1.4
-
-FROM centos:6.6
-MAINTAINER [email protected]
-
-RUN yum install -y perl-JSON
-
-RUN curl -O 
http://traffic-control-cdn.net/downloads/trafficserver-5.3.2-599.089d585.el6.x86_64.rpm
-RUN yum install -y trafficserver-5.3.2-599.089d585.el6.x86_64.rpm
-
-RUN mkdir /opt/ort
-RUN cd /opt/ort && curl -LO 
https://github.com/apache/trafficcontrol/raw/RELEASE-1.4.0-RC0/traffic_ops/bin/traffic_ops_ort.pl
-RUN chmod 777 /opt/ort/traffic_ops_ort.pl
-
-RUN curl -O 
http://traffic-control-cdn.net/downloads/astats_over_http-1.2-8.el6.x86_64.rpm
-RUN yum install -y astats_over_http-1.2-8.el6.x86_64.rpm
-
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_cop
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_crashlog
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_ctl
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_layout
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_line
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_logcat
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_logstats
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_manager
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_sac
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/trafficserver
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_server
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_top
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_via
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/tspush
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/tsxs
-
-# \todo move Heka to its own container, sharing the ATS log file via --volume
-RUN curl -LO 
https://github.com/mozilla-services/heka/releases/download/v0.10.0/heka-0_10_0-linux-amd64.rpm
-RUN yum install -y heka-0_10_0-linux-amd64.rpm
-RUN mkdir etc/hekad
-RUN printf '[ats_traffic_logs] \n\
-type = "LogstreamerInput" \n\
-splitter = "TokenSplitter" \n\
-decoder = "ATS_transform_decoder" \n\
-log_directory = "/opt/trafficserver/var/log/trafficserver" \n\
-file_match = "custom_ats_2.log" \n\
-[ATS_transform_decoder] \n\
-type = "PayloadRegexDecoder" \n\
-match_regex = '"'^(?P<UnixTimestamp>[\d]+\.[\d]+) chi=(?P<chi>\S+) 
phn=(?P<phn>\S+) shn=(?P<shn>\S+) url=(?P<url>\S+) cqhm=(?P<cqhm>\w+) 
cqhv=(?P<cqhv>\S+) pssc=(?P<pssc>\d+) ttms=(?P<ttms>\d+) b=(?P<b>\d+) 
sssc=(?P<sssc>\d+) sscl=(?P<sscl>\d+)  cfsc=(?P<cfsc>\S+) pfsc=(?P<pfsc>\S+) 
crc=(?P<crc>\S+) phr=(?P<phr>\S+) uas=(?P<uas>\S+) xmt=(?P<xmt>\S+)'"' \n\n\
-[ATS_transform_decoder.message_fields] \n\
-Type = "ats_traffic" \n\
-timestamp = "%%UnixTimestamp%%" \n\
-clientip = "%%chi%%" \n\
-host = "%%phn%%" \n\
-shn = "%%shn%%" \n\
-url = "%%url%%" \n\
-method = "%%cqhm%%" \n\
-version = "%%cqhv%%" \n\
-status = "%%pssc%%" \n\
-request_duration = "%%ttms%%" \n\
-bytes = "%%b%%" \n\
-response_code = "%%sssc%%" \n\
-response_length = "%%sscl%%" \n\
-client_status = "%%cfsc%%" \n\
-proxy_code = "%%pfsc%%" \n\
-crc = "%%crc%%" \n\
-phr = "%%phr%%" \n\
-useragent = "%%uas%%" \n\
-money_trace = "%%xmt%%" \n\
-[PayloadEncoder] \n\
-type = "PayloadEncoder" \n\
-[FxaKafkaOutput] \n\
-type = "KafkaOutput" \n\
-topic = "ipcdn" \n\
-message_matcher = "TRUE" \n\
-encoder = "PayloadEncoder" \n\
-addrs = ["{{.KafkaUri}}"] \n\
-[Message_Counter] \n\
-type = "CounterFilter" \n\
-message_matcher = "Type != '"'heka.counter-output'"'" \n\
-encoder = "CounterLogEncoder" \n\
-[CounterLogEncoder] \n\
-type="PayloadEncoder" \n\
-append_newlines = true \n\
-prefix_ts = true \n\
-ts_format = "Mon Jan _2 15:04:05 MST 2006" \n\
-[CounterLogOutput] \n\
-type = "FileOutput" \n\
-message_matcher = "Type == '"'heka.counter-output'"'" \n\
-encoder = "CounterLogEncoder" \n\
-path = "/tmp/hekad_counter.log"' > /etc/hekad/heka.toml
-
-RUN printf '#!/bin/sh \n\n\
-# \n\
-# hekad <summary> \n\
-# \n\
-# chkconfig:   2345 80 20 \n\
-# description: Starts and stops a single heka instance on this system \n\
-# \n\
-### BEGIN INIT INFO \n\
-# Provides: Heka \n\
-# Required-Start: $network $named \n\
-# Required-Stop: $network $named \n\
-# Default-Start: 2 3 4 5 \n\
-# Default-Stop: 0 1 6 \n\
-# Short-Description: This service manages the hekad daemon \n\
-# Description: Heka is a high performance general purpose data acquisition and 
processing engine. \n\
-### END INIT INFO \n\
-# \n\
-# init.d / servicectl compatibility (openSUSE) \n\
-# \n\
-if [ -f /etc/rc.status ]; then \n\
-    . /etc/rc.status \n\
-    rc_reset \n\
-fi \n\
-# \n\
-# Source function library. \n\
-# \n\
-if [ -f /etc/rc.d/init.d/functions ]; then \n\
-    . /etc/rc.d/init.d/functions \n\
-fi \n\
-. /etc/init.d/functions \n\
-name="hekad" \n\
-exec="/usr/bin/hekad" \n\
-prog="hekad" \n\
-user="root" \n\
-group="root" \n\
-pidfile=/var/run/${prog}.pid \n\
-conf=/etc/hekad/heka.toml \n\
-log=/var/log/heka.log \n\
-DAEMON_ARGS=${DAEMON_ARGS---user root} \n\
-nice=19 \n\
-args=" --config $conf" \n\
-[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog \n\
-lockfile=/var/lock/subsys/$prog \n\
-HEKA_USER=root \n\
-start() { \n\
-    [ -x $exec ] || exit 5 \n\
-    [ -f $CONF_FILE ] || exit 6 \n\
-    # if not running, start it up here, usually something like "daemon $exec" 
\n\
-    # Run the program! \n\
-    nice -n ${nice} chroot --userspec $user:$group / sh -c " exec \"$prog\" 
$args " > ${log} 2>&1 & \n\
-     # Generate the pidfile from here. If we instead made the forked process 
\n\
-  # generate it there will be a race condition between the pidfile writing \n\
-  # and a process possibly asking for status. \n\
-  echo $! > $pidfile \n\
-  echo "$name started." \n\
-  return 0 \n\
-} \n\
-stop() { \n\
-      # Try a few times to kill TERM the program \n\
-  if status ; then \n\
-    pid=`cat "$pidfile"` \n\
-    echo "Killing $name (pid $pid) with SIGTERM" \n\
-  kill -9 $pid \n\
-    # Wait for it to exit. \n\
-    for i in 1 2 3 4 5 ; do \n\
-      echo "Waiting $name (pid $pid) to die..." \n\
-      status || break \n\
-      sleep 1 \n\
-    done \n\
-    if status ; then \n\
-      echo "$name stop failed; still running." \n\
-    else \n\
-      echo "$name stopped." \n\
-    fi \n\
-  fi \n\
-} \n\
-restart() { \n\
-    stop \n\
-    start \n\
-} \n\
-reload() { \n\
-    restart \n\
-} \n\
-force_reload() { \n\
-    restart \n\
-} \n\
-status(){ \n\
-  if [ -f "$pidfile" ] ; then \n\
-    pid=`cat "$pidfile"` \n\
-    if kill -0 $pid > /dev/null 2> /dev/null ; then \n\
-      # process by this pid is running. \n\
-      # It may not be our pid, but thats what you get with just pidfiles. \n\
-      # TODO(sissel): Check if this process seems to be the same as the one we 
\n\
-      # expect. Itd be nice to use flock here, but flock uses fork, not exec, 
\n\
-      # so it makes it quite awkward to use in this case. \n\
-      return 0 \n\
-    else \n\
-      return 2 # program is dead but pid file exists \n\
-    fi \n\
-  else \n\
-    return 3 # program is not running \n\
-  fi \n\
-} \n\
-rh_status() { \n\
-    # run checks to determine if the service is running or use generic status 
\n\
-    status -p $pidfile $prog \n\
-} \n\
-rh_status_q() { \n\
-    rh_status >/dev/null 2>&1 \n\
-} \n\
-case "$1" in \n\
-    start) \n\
-        rh_status_q && exit 0 \n\
-        $1 \n\
-        ;; \n\
-    stop) \n\
-        rh_status_q || exit 0 \n\
-        $1 \n\
-        ;; \n\
-    restart) \n\
-        $1 \n\
-        ;; \n\
-    reload) \n\
-        rh_status_q || exit 7 \n\
-        $1 \n\
-        ;; \n\
-    force-reload) \n\
-        force_reload \n\
-        ;; \n\
-    status) \n\
-     status \n\
-    code=$? \n\
-    if [ $code -eq 0 ] ; then \n\
-      echo "$prog is running" \n\
-    else \n\
-      echo "$prog is not running" \n\
-    fi \n\
-    exit $code \n\
-        ;; \n\
-    condrestart|try-restart) \n\
-        rh_status_q || exit 0 \n\
-        restart \n\
-        ;; \n\
-    *) \n\
-        echo $"Usage: $0 
{start|stop|status|restart|condrestart|try-restart|reload|force-reload}" \n\
-        exit 2 \n\
-esac' > /etc/init.d/hekad
-RUN chmod +x /etc/init.d/hekad
-
-EXPOSE 80 443
-ADD run.sh /
-ENTRYPOINT /run.sh
diff --git a/infrastructure/docker/traffic_server_edge/run.sh 
b/infrastructure/docker/traffic_server_edge/run.sh
deleted file mode 100755
index ad28550d6a..0000000000
--- a/infrastructure/docker/traffic_server_edge/run.sh
+++ /dev/null
@@ -1,104 +0,0 @@
-#!/bin/bash
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-# 
-#   http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Script for running the Dockerfile for Traffic Server Edge caches.
-# The Dockerfile sets up a Docker image which can be used for any new 
container;
-# This script, which should be run when the container is run (it's the 
ENTRYPOINT), will configure the container.
-#
-# The following environment variables must be set (ordinarily by `docker run 
-e` arguments):
-# TRAFFIC_OPS_URI
-# TRAFFIC_OPS_USER
-# TRAFFIC_OPS_PASS
-# IP
-# DOMAIN
-# GATEWAY
-# KAFKA_URI
-
-start() {
-       chown ats:ats /dev/ram0
-       chown ats:ats /dev/ram1
-
-       /opt/trafficserver/bin/trafficserver start
-       service hekad start
-       exec tail -f 
/opt/trafficserver/var/log/trafficserver/traffic_server.stderr
-}
-
-init() {
-       TMP_TO_COOKIE="$(curl -v -s -k -X POST --data '{ 
"u":"'"$TRAFFIC_OPS_USER"'", "p":"'"$TRAFFIC_OPS_PASS"'" }' 
$TRAFFIC_OPS_URI/api/4.0/user/login 2>&1 | grep 'Set-Cookie' | sed -e 
's/.*mojolicious=\(.*\); expires.*/\1/')"
-       echo "Got Cookie: $TMP_TO_COOKIE"
-
-       # \todo figure out a better way to get the IP, domain (Docker network 
name), gateway
-  TMP_IP=$IP
-       TMP_DOMAIN=$DOMAIN
-       TMP_GATEWAY=$GATEWAY
-
-       TMP_CACHEGROUP_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/cachegroups.json | python 
-c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="edge-east"]; print match[0]')"            
-       echo "Got cachegroup ID: $TMP_CACHEGROUP_ID"
-
-       TMP_SERVER_TYPE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/types.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="EDGE"]; print match[0]')"
-       echo "Got server type ID: $TMP_SERVER_TYPE_ID"
-
-       TMP_SERVER_PROFILE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/profiles.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="EDGE1_532"]; print match[0]')"
-       echo "Got server profile ID: $TMP_SERVER_PROFILE_ID"
-
-       TMP_PHYS_LOCATION_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/phys_locations.json | 
python -c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="plocation-nyc-1"]; print match[0]')"
-       echo "Got phys location ID: $TMP_PHYS_LOCATION_ID"
-
-       TMP_CDN_ID="$(curl -s -k -X GET -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
$TRAFFIC_OPS_URI/api/4.0/cdns.json | python -c 'import 
json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in obj["response"] if 
x["name"]=="cdn"]; print match[0]')"
-       echo "Got cdn ID: $TMP_CDN_ID"
-
-       curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
--data-urlencode "host_name=$HOSTNAME" --data-urlencode 
"domain_name=$TMP_DOMAIN" --data-urlencode "interface_name=eth0" 
--data-urlencode "ip_address=$TMP_IP" --data-urlencode "ip_netmask=255.255.0.0" 
--data-urlencode "ip_gateway=$TMP_GATEWAY" --data-urlencode 
"interface_mtu=9000" --data-urlencode "cdn=$TMP_CDN_ID" --data-urlencode 
"cachegroup=$TMP_CACHEGROUP_ID" --data-urlencode 
"phys_location=$TMP_PHYS_LOCATION_ID" --data-urle [...]
-
-       TMP_SERVER_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/servers.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["hostName"]=="'"$HOSTNAME"'"]; print match[0]')"
-       echo "Got server ID: $TMP_SERVER_ID"
-
-       curl -v -k -H "Content-Type: application/x-www-form-urlencoded" -H 
"Cookie: mojolicious=$TMP_TO_COOKIE" -X POST --data-urlencode 
"id=$TMP_SERVER_ID" --data-urlencode "status=REPORTED" 
$TRAFFIC_OPS_URI/server/updatestatus
-
-       export PERL5LIB=/usr/local/lib/neto_io/lib/perl5 && \
-               /opt/ort/traffic_ops_ort.pl badass WARN $TRAFFIC_OPS_URI 
$TRAFFIC_OPS_USER:$TRAFFIC_OPS_PASS
-
-       # if the container wasn't given ramdisk devices, configure ATS for 
directories
-       if [ ! -e "/dev/ram0" ] || [ ! -e "/dev/ram1" ]; then
-                       sed -i -- "s/volume=/1G volume=/g" 
/opt/trafficserver/etc/trafficserver/storage.config
-
-                       mkdir /atscache
-                       chmod 777 /atscache
-                       chown ats:ats /atscache
-
-                       mkdir /atscache/disk0
-                       chmod 777 /atscache/disk0
-                       chown ats:ats /atscache/disk0
-                       ln -s /atscache/disk0 /dev/ram0
-
-                       mkdir /atscache/disk1
-                       chmod 777 /atscache/disk1
-                       chown ats:ats /atscache/disk1
-                       ln -s /atscache/disk1 /dev/ram1
-       fi
-
-       # \todo remove when TO/ort is changed from 1%
-       sed -i -- "s/size=1%/size=50%/g" 
/opt/trafficserver/etc/trafficserver/volume.config
-
-       sed -i -- "s/{{.KafkaUri}}/$KAFKA_URI/g" /etc/hekad/heka.toml
-
-       echo "INITIALIZED=1" >> /etc/environment
-}
-
-source /etc/environment
-if [ -z "$INITIALIZED" ]; then init; fi
-start
diff --git a/infrastructure/docker/traffic_server_mid/Dockerfile 
b/infrastructure/docker/traffic_server_mid/Dockerfile
deleted file mode 100644
index 612b78e5b1..0000000000
--- a/infrastructure/docker/traffic_server_mid/Dockerfile
+++ /dev/null
@@ -1,74 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-############################################################
-# Dockerfile to build Traffic Server container images
-#   as Mids for Traffic Control 1.4
-# Based on CentOS 6.6
-############################################################
-
-# For cache, you may either use (RAM or disk) block devices or disk directories
-# To use RAM block devices, pass them as /dev/ram0 and /dev/ram1 via `docker 
run --device`
-# To use disk directories, simply don't pass devices, and the container will 
configure Traffic Server for directories
-
-# Block devices may be created on the native machine with, for example, 
`modprobe brd`.
-# The recommended minimum size for each block devices is 1G.
-# For example, `sudo modprobe brd rd_size=1048576 rd_nr=2`
-
-# Example Build and Run:
-#
-# docker build --rm --tag traffic_server_mid:1.4 traffic_server_mid
-#
-# docker run --name my-mid-0 --hostname my-mid-0 --net cdnet --device 
/dev/ram0:/dev/ram0 --device /dev/ram1:/dev/ram1 --env 
TRAFFIC_OPS_URI=http://my-traffic-ops:3000 --env TRAFFIC_OPS_USER=superroot 
--env TRAFFIC_OPS_PASS=supersecreterpassward --detach traffic_server_mid:1.4
-#
-# OR
-#
-# docker run --name my-mid-0 --hostname my-mid-0 --net cdnet --env 
TRAFFIC_OPS_URI=http://my-traffic-ops:3000 --env TRAFFIC_OPS_USER=superroot 
--env TRAFFIC_OPS_PASS=supersecreterpassward --detach traffic_server_mid:1.4
-
-FROM centos:6.6
-MAINTAINER [email protected]
-
-RUN yum install -y perl-JSON
-
-RUN curl -O 
http://traffic-control-cdn.net/downloads/trafficserver-5.3.2-599.089d585.el6.x86_64.rpm
-RUN yum install -y trafficserver-5.3.2-599.089d585.el6.x86_64.rpm
-
-RUN mkdir /opt/ort
-RUN cd /opt/ort && curl -LO 
https://github.com/apache/trafficcontrol/raw/RELEASE-1.4.0-RC0/traffic_ops/bin/traffic_ops_ort.pl
-RUN chmod +x /opt/ort/traffic_ops_ort.pl
-RUN yum install -y "perl(JSON)"
-RUN curl -O 
http://traffic-control-cdn.net/downloads/astats_over_http-1.2-8.el6.x86_64.rpm
-RUN yum install -y astats_over_http-1.2-8.el6.x86_64.rpm
-
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_cop
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_crashlog
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_ctl
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_layout
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_line
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_logcat
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_logstats
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_manager
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_sac
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/trafficserver
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_server
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_top
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/traffic_via
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/tspush
-RUN setcap 'cap_net_bind_service=+ep' /opt/trafficserver/bin/tsxs
-
-EXPOSE 80 443
-ADD run.sh /
-ENTRYPOINT /run.sh
diff --git a/infrastructure/docker/traffic_server_mid/run.sh 
b/infrastructure/docker/traffic_server_mid/run.sh
deleted file mode 100755
index 481c854106..0000000000
--- a/infrastructure/docker/traffic_server_mid/run.sh
+++ /dev/null
@@ -1,97 +0,0 @@
-#!/bin/bash
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-# 
-#   http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Script for running the Dockerfile for Traffic Server Mid caches.
-# The Dockerfile sets up a Docker image which can be used for any new 
container;
-# This script, which should be run when the container is run (it's the 
ENTRYPOINT), will configure the container.
-#
-# The following environment variables must be set (ordinarily by `docker run 
-e` arguments):
-# TRAFFIC_OPS_URI
-# TRAFFIC_OPS_USER
-# TRAFFIC_OPS_PASS
-
-start() {
-       /opt/trafficserver/bin/trafficserver start
-       exec tail -f 
/opt/trafficserver/var/log/trafficserver/traffic_server.stderr
-}
-
-init() {
-       TMP_TO_COOKIE="$(curl -v -s -k -X POST --data '{ 
"u":"'"$TRAFFIC_OPS_USER"'", "p":"'"$TRAFFIC_OPS_PASS"'" }' 
$TRAFFIC_OPS_URI/api/4.0/user/login 2>&1 | grep 'Set-Cookie' | sed -e 
's/.*mojolicious=\(.*\); expires.*/\1/')"
-       echo "Got Cookie: $TMP_TO_COOKIE"
-
-       # \todo figure out a better way to get the IP, domain (Docker network 
name), gateway
-  TMP_IP=$IP
-       TMP_DOMAIN=$DOMAIN
-       TMP_GATEWAY=$GATEWAY
-
-       TMP_CACHEGROUP_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/cachegroups.json | python 
-c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="mid-east"]; print match[0]')"             
-       echo "Got cachegroup ID: $TMP_CACHEGROUP_ID"
-
-       TMP_SERVER_TYPE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/types.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="MID"]; print match[0]')"
-       echo "Got server type ID: $TMP_SERVER_TYPE_ID"
-
-       TMP_SERVER_PROFILE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/profiles.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="MID1_532"]; print match[0]')"
-       echo "Got server profile ID: $TMP_SERVER_PROFILE_ID"
-
-       TMP_PHYS_LOCATION_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/phys_locations.json | 
python -c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="plocation-nyc-1"]; print match[0]')"
-       echo "Got phys location ID: $TMP_PHYS_LOCATION_ID"
-
-       TMP_CDN_ID="$(curl -s -k -X GET -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
$TRAFFIC_OPS_URI/api/4.0/cdns.json | python -c 'import 
json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in obj["response"] if 
x["name"]=="cdn"]; print match[0]')"
-       echo "Got cdn ID: $TMP_CDN_ID"
-
-       curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
--data-urlencode "host_name=$HOSTNAME" --data-urlencode 
"domain_name=$TMP_DOMAIN" --data-urlencode "interface_name=eth0" 
--data-urlencode "ip_address=$TMP_IP" --data-urlencode "ip_netmask=255.255.0.0" 
--data-urlencode "ip_gateway=$TMP_GATEWAY" --data-urlencode 
"interface_mtu=9000" --data-urlencode "cdn=$TMP_CDN_ID" --data-urlencode 
"cachegroup=$TMP_CACHEGROUP_ID" --data-urlencode 
"phys_location=$TMP_PHYS_LOCATION_ID" --data-urle [...]
-
-       TMP_SERVER_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/servers.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["hostName"]=="'"$HOSTNAME"'"]; print match[0]')"
-       echo "Got server ID: $TMP_SERVER_ID"
-
-       curl -v -k -H "Content-Type: application/x-www-form-urlencoded" -H 
"Cookie: mojolicious=$TMP_TO_COOKIE" -X POST --data-urlencode 
"id=$TMP_SERVER_ID" --data-urlencode "status=ONLINE" 
$TRAFFIC_OPS_URI/server/updatestatus
-
-       export PERL5LIB=/usr/local/lib/neto_io/lib/perl5 && \
-       /opt/ort/traffic_ops_ort.pl badass WARN $TRAFFIC_OPS_URI 
$TRAFFIC_OPS_USER:$TRAFFIC_OPS_PASS
-
-       # if the container wasn't given ramdisk devices, configure ATS for 
directories
-       if [ ! -e "/dev/ram0" ] || [ ! -e "/dev/ram1" ]; then
-                       sed -i -- "s/volume=/1G volume=/g" 
/opt/trafficserver/etc/trafficserver/storage.config
-
-                       mkdir /atscache
-                       chmod 777 /atscache
-                       chown ats:ats /atscache
-
-                       mkdir /atscache/disk0
-                       chmod 777 /atscache/disk0
-                       chown ats:ats /atscache/disk0
-                       ln -s /atscache/disk0 /dev/ram0
-
-                       mkdir /atscache/disk1
-                       chmod 777 /atscache/disk1
-                       chown ats:ats /atscache/disk1
-                       ln -s /atscache/disk1 /dev/ram1
-       fi
-
-       # \todo remove when TO/ort is changed from 1%
-       sed -i -- "s/size=1%/size=40%/g" 
/opt/trafficserver/etc/trafficserver/volume.config
-
-       chown ats:ats /dev/ram0
-       chown ats:ats /dev/ram1
-
-       echo "INITIALIZED=1" >> /etc/environment
-}
-
-source /etc/environment
-if [ -z "$INITIALIZED" ]; then init; fi
-start
diff --git a/infrastructure/docker/traffic_stats/Dockerfile 
b/infrastructure/docker/traffic_stats/Dockerfile
deleted file mode 100644
index d8de0f639b..0000000000
--- a/infrastructure/docker/traffic_stats/Dockerfile
+++ /dev/null
@@ -1,46 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-############################################################
-# Dockerfile to build Traffic Stats 1.4 container images
-# Based on CentOS 6.6
-############################################################
-
-# Example Build and Run:
-# docker build --rm --tag traffic_stats:1.6 Traffic_Stats
-#
-# docker run --name my-traffic-stats --hostname my-traffic-stats --net cdnet 
--env TRAFFIC_OPS_URI=http://my-traffic-ops:3000 --env 
TRAFFIC_OPS_USER=superroot --env TRAFFIC_OPS_PASS=supersecreterpassward --env 
CERT_COUNTRY=US --env CERT_STATE=Colorado --env CERT_CITY=Denver --env 
CERT_COMPANY=Kabletown --detach traffic_stats:1.4
-
-FROM centos:6.6
-MAINTAINER [email protected]
-
-# Default value for RPM -- override with `docker build --build-arg RPM=...'
-ARG INFLUXDB=http://influxdb.s3.amazonaws.com/influxdb-0.11.1-1.x86_64.rpm
-ARG 
GRAFANA=https://grafanarel.s3.amazonaws.com/builds/grafana-3.1.1-1470047149.x86_64.rpm
-ARG 
RPM=http://traffic-control-cdn.net/downloads/1.6.0/RELEASE-1.6.0/traffic_stats-1.6.0-3503.4899d302.x86_64.rpm
-
-RUN yum install -y tar unzip perl-JSON perl-WWW-Curl
-
-ADD $INFLUXDB /
-ADD $GRAFANA /
-ADD $RPM /
-
-RUN yum install -y /$(basename $INFLUXDB) /$(basename $RPM) /$(basename 
$GRAFANA)
-RUN rm /$(basename $INFLUXDB) /$(basename $RPM) /$(basename $GRAFANA)
-
-EXPOSE 80 8086 8083
-ADD run.sh /
-ENTRYPOINT /run.sh
diff --git a/infrastructure/docker/traffic_stats/run.sh 
b/infrastructure/docker/traffic_stats/run.sh
deleted file mode 100755
index b1559aaafc..0000000000
--- a/infrastructure/docker/traffic_stats/run.sh
+++ /dev/null
@@ -1,134 +0,0 @@
-#!/bin/bash
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-# 
-#   http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Script for running the Dockerfile for Traffic Stats.
-# The Dockerfile sets up a Docker image which can be used for any new 
container;
-# This script, which should be run when the container is run (it's the 
ENTRYPOINT), will configure the container.
-#
-# The following environment variables must be set (ordinarily by `docker run 
-e` arguments):
-# TRAFFIC_OPS_URI
-# TRAFFIC_OPS_USER
-# TRAFFIC_OPS_PASS
-# CERT_COUNTRY
-# CERT_STATE
-# CERT_CITY
-# CERT_COMPANY
-
-start() {
-       service influxdb start
-       service traffic_stats start
-       service grafana-server start
-       touch /opt/traffic_stats/var/log/traffic_stats/traffic_stats.log
-       exec tail -f /opt/traffic_stats/var/log/traffic_stats/traffic_stats.log
-}
-
-init() {
-       TMP_TO_COOKIE="$(curl -v -s -k -X POST --data '{ 
"u":"'"$TRAFFIC_OPS_USER"'", "p":"'"$TRAFFIC_OPS_PASS"'" }' 
$TRAFFIC_OPS_URI/api/4.0/user/login 2>&1 | grep 'Set-Cookie' | sed -e 
's/.*mojolicious=\(.*\); expires.*/\1/')"
-       echo "Got Cookie: $TMP_TO_COOKIE"
-
-       TMP_IP=$IP
-       TMP_DOMAIN=$DOMAIN
-       TMP_GATEWAY=$GATEWAY
-
-       if [ "$CREATE_TO_DB_ENTRY" = "YES" ] ; then
-
-               TMP_CACHEGROUP_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/cachegroups.json | python 
-c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="mid-east"]; print match[0]')"
-               echo "Got cachegroup ID: $TMP_CACHEGROUP_ID"
-
-               TMP_SERVER_TYPE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/types.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="INFLUXDB"]; print match[0]')"
-               echo "Got server type ID: $TMP_SERVER_TYPE_ID"
-
-               TMP_SERVER_PROFILE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/profiles.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="INFLUXDB"]; print match[0]')"
-               echo "Got server profile ID: $TMP_SERVER_PROFILE_ID"
-
-               TMP_PHYS_LOCATION_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/phys_locations.json | 
python -c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="plocation-nyc-1"]; print match[0]')"
-               echo "Got phys location ID: $TMP_PHYS_LOCATION_ID"
-
-               TMP_CDN_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/cdns.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="cdn"]; print match[0]')"
-               echo "Got cdn ID: $TMP_CDN_ID"
-
-               curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
--data-urlencode "host_name=$HOSTNAME" --data-urlencode 
"domain_name=$TMP_DOMAIN" --data-urlencode "interface_name=eth0" 
--data-urlencode "ip_address=$TMP_IP" --data-urlencode "ip_netmask=255.255.0.0" 
--data-urlencode "ip_gateway=$TMP_GATEWAY" --data-urlencode 
"interface_mtu=9000" --data-urlencode "cdn=$TMP_CDN_ID" --data-urlencode 
"cachegroup=$TMP_CACHEGROUP_ID" --data-urlencode 
"phys_location=$TMP_PHYS_LOCATION_ID" --data-url [...]
-
-       fi 
-
-       TMP_SERVER_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/servers.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["hostName"]=="'"$HOSTNAME"'"]; print match[0]')"
-       echo "Got server ID: $TMP_SERVER_ID"
-
-       curl -v -k -H "Content-Type: application/x-www-form-urlencoded" -H 
"Cookie: mojolicious=$TMP_TO_COOKIE" -X POST --data-urlencode 
"id=$TMP_SERVER_ID" --data-urlencode "status=ONLINE" 
$TRAFFIC_OPS_URI/server/updatestatus
-
-       sed -i -- 's/"toUser": "admin"/"toUser": "'"$TRAFFIC_OPS_USER"'"/g' 
/opt/traffic_stats/conf/traffic_stats.cfg
-       sed -i -- 's/"toPasswd": ""/"toPasswd": "'"$TRAFFIC_OPS_PASS"'"/g' 
/opt/traffic_stats/conf/traffic_stats.cfg
-       sed -i -- 's#"toUrl": "https://localhost"#"toUrl": 
"'"$TRAFFIC_OPS_URI"'"#g' /opt/traffic_stats/conf/traffic_stats.cfg
-
-       openssl req -newkey rsa:2048 -nodes -keyout /etc/ssl/influxdb.key -x509 
-days 365 -out /etc/ssl/influxdb.crt -subj 
"/C=$CERT_COUNTRY/ST=$CERT_STATE/L=$CERT_CITY/O=$CERT_COMPANY"
-
-       cat /etc/ssl/influxdb.key /etc/ssl/influxdb.crt > /etc/ssl/influxdb.pem
-
-       service influxdb start
-
-       sleep 10
-
-       influx -execute 'create database cache_stats'
-       influx -execute 'create database deliveryservice_stats'
-       influx -execute 'create database daily_stats'
-       influx -execute 'create retention policy daily on cache_stats duration 
26h replication 3 DEFAULT'
-       influx -execute 'create retention policy daily on deliveryservice_stats 
duration 26h replication 3 DEFAULT'
-       influx -execute 'create retention policy monthly on cache_stats 
duration 30d replication 3 DEFAULT'
-       influx -execute 'create retention policy monthly on 
deliveryservice_stats duration 30d replication 3 DEFAULT'
-       influx -execute 'create retention policy indefinite on daily_stats 
duration INF replication 3 DEFAULT'
-
-       influx --execute 'CREATE CONTINUOUS QUERY bandwidth_1min ON cache_stats 
BEGIN SELECT mean(value) AS "value" INTO 
"cache_stats"."monthly"."bandwidth.1min" FROM "cache_stats"."daily".bandwidth 
GROUP BY time(1m), * END'
-       influx --execute 'CREATE CONTINUOUS QUERY connections_1min ON 
cache_stats BEGIN SELECT mean(value) AS "value" INTO 
"cache_stats"."monthly"."connections.1min" FROM 
"cache_stats"."daily"."ats.proxy.process.http.current_client_connections" GROUP 
BY time(1m), * END'
-       influx --execute 'CREATE CONTINUOUS QUERY bandwidth_cdn_1min ON 
cache_stats BEGIN SELECT sum(value) AS "value" INTO 
"cache_stats"."monthly"."bandwidth.cdn.1min" FROM 
"cache_stats"."monthly"."bandwidth.1min" GROUP BY time(1m), cdn END'
-       influx --execute 'CREATE CONTINUOUS QUERY connections_cdn_1min ON 
cache_stats BEGIN SELECT sum(value) AS "value" INTO 
"cache_stats"."monthly"."connections.cdn.1min" FROM 
"cache_stats"."monthly"."connections.1min" GROUP BY time(1m), cdn END'
-       influx --execute 'CREATE CONTINUOUS QUERY bandwidth_cdn_type_1min ON 
cache_stats RESAMPLE FOR 5m BEGIN SELECT sum(value) AS "value" INTO 
"cache_stats"."monthly"."bandwidth.cdn.type.1min" FROM 
"cache_stats"."monthly"."bandwidth.1min" GROUP BY time(1m), cdn, type END'
-       influx --execute 'CREATE CONTINUOUS QUERY connections_cdn_type_1min ON 
cache_stats RESAMPLE FOR 5m BEGIN SELECT sum(value) AS "value" INTO 
"cache_stats"."monthly"."connections.cdn.type.1min" FROM 
"cache_stats"."monthly"."connections.1min" GROUP BY time(1m), cdn, type END'
-       influx --execute 'CREATE CONTINUOUS QUERY maxKbps_1min ON cache_stats 
RESAMPLE FOR 2m BEGIN SELECT mean(value) AS value INTO 
cache_stats.monthly."maxkbps.1min" FROM cache_stats.daily.maxKbps GROUP BY 
time(1m), * END'
-       influx --execute 'CREATE CONTINUOUS QUERY maxkbps_cdn_1min ON 
cache_stats RESAMPLE FOR 5m BEGIN SELECT sum(value) AS value INTO 
cache_stats.monthly."maxkbps.cdn.1min" FROM cache_stats.monthly."maxkbps.1min" 
GROUP BY time(1m), cdn END'
-
-       influx --execute 'CREATE CONTINUOUS QUERY tps_2xx_ds_1min ON 
deliveryservice_stats BEGIN SELECT mean(value) AS "value" INTO 
"deliveryservice_stats"."monthly"."tps_2xx.ds.1min" FROM 
"deliveryservice_stats"."daily".tps_2xx WHERE cachegroup = '"'total'"' GROUP BY 
time(1m), * END'
-       influx --execute 'CREATE CONTINUOUS QUERY tps_3xx_ds_1min ON 
deliveryservice_stats BEGIN SELECT mean(value) AS "value" INTO 
"deliveryservice_stats"."monthly"."tps_3xx.ds.1min" FROM 
"deliveryservice_stats"."daily".tps_3xx WHERE cachegroup = '"'total'"' GROUP BY 
time(1m), * END'
-       influx --execute 'CREATE CONTINUOUS QUERY tps_4xx_ds_1min ON 
deliveryservice_stats BEGIN SELECT mean(value) AS "value" INTO 
"deliveryservice_stats"."monthly"."tps_4xx.ds.1min" FROM 
"deliveryservice_stats"."daily".tps_4xx WHERE cachegroup = '"'total'"' GROUP BY 
time(1m), * END'
-       influx --execute 'CREATE CONTINUOUS QUERY tps_5xx_ds_1min ON 
deliveryservice_stats BEGIN SELECT mean(value) AS "value" INTO 
"deliveryservice_stats"."monthly"."tps_5xx.ds.1min" FROM 
"deliveryservice_stats"."daily".tps_5xx WHERE cachegroup = '"'total'"' GROUP BY 
time(1m), * END'
-       influx --execute 'CREATE CONTINUOUS QUERY tps_total_ds_1min ON 
deliveryservice_stats BEGIN SELECT mean(value) AS "value" INTO 
"deliveryservice_stats"."monthly"."tps_total.ds.1min" FROM 
"deliveryservice_stats"."daily".tps_total WHERE cachegroup = '"'total'"' GROUP 
BY time(1m), * END'
-       influx --execute 'CREATE CONTINUOUS QUERY kbps_ds_1min ON 
deliveryservice_stats BEGIN SELECT mean(value) AS "value" INTO 
"deliveryservice_stats"."monthly"."kbps.ds.1min" FROM 
"deliveryservice_stats"."daily".kbps WHERE cachegroup = '"'total'"' GROUP BY 
time(1m), * END'
-       influx --execute 'CREATE CONTINUOUS QUERY kbps_cg_1min ON 
deliveryservice_stats BEGIN SELECT mean(value) AS "value" INTO 
"deliveryservice_stats"."monthly"."kbps.cg.1min" FROM 
"deliveryservice_stats"."daily".kbps WHERE cachegroup != '"'total'"' GROUP BY 
time(1m), * END'
-       influx --execute 'CREATE CONTINUOUS QUERY max_kbps_ds_1day ON 
deliveryservice_stats BEGIN SELECT max(value) AS "value" INTO 
"deliveryservice_stats"."indefinite"."max.kbps.ds.1day" FROM 
"deliveryservice_stats"."monthly"."kbps.ds.1min" GROUP BY time(1d), 
deliveryservice, cdn END'
-
-       service influxdb stop
-
-       sed -i -- 's/;protocol = http/protocol = https/g' 
/etc/grafana/grafana.ini
-       sed -i -- 's/;http_port = 3000/http_port = 1443/g' 
/etc/grafana/grafana.ini
-       sed -i -- 's#;cert_file =#cert_file = /etc/ssl/influxdb.crt#g' 
/etc/grafana/grafana.ini
-       sed -i -- 's#;cert_key =#cert_key = /etc/ssl/influxdb.key#g' 
/etc/grafana/grafana.ini
-       sed -i -n '1h;1!H;${g;s/access\n;enabled = false/access\nenabled = 
true/;p;}' /etc/grafana/grafana.ini
-
-       service grafana-server start
-       curl -k -H "Content-Type: application/json" -X POST 
https://admin:admin@localhost:1443/api/datasources -d 
'{"name":"cache_stats","type":"influxdb","url":"http://c28-ts-01.cdnlab.comcast.net:8086","access":"proxy","jsonData":{},"database":"cache_stats","user":"foo","password":"fooo"}'
-       curl -k -H "Content-Type: application/json" -X POST 
https://admin:admin@localhost:1443/api/datasources -d 
'{"name":"deliveryservice_stats","type":"influxdb","url":"http://c28-ts-01.cdnlab.comcast.net:8086","access":"proxy","jsonData":{},"database":"deliveryservice_stats","user":"foo","password":"fooo"}'
-       curl -k -H "Content-Type: application/json" -X POST 
https://admin:admin@localhost:1443/api/datasources -d 
'{"name":"telegraf","type":"influxdb","url":"http://c28-ts-01.cdnlab.comcast.net:8086","access":"proxy","jsonData":{},"database":"telegraf","user":"foo","password":"fooo"}'
-       curl -k -H "Content-Type: application/json" -X POST 
https://admin:admin@localhost:1443/api/datasources -d 
'{"name":"daily_stats","type":"influxdb","url":"http://c28-ts-01.cdnlab.comcast.net:8086","access":"proxy","jsonData":{},"database":"cache_stats","user":"foo","password":"fooo"}'
-       service grafana-server stop
-
-
-       echo "INITIALIZED=1" >> /etc/environment
-}
-
-source /etc/environment
-if [ -z "$INITIALIZED" ]; then init; fi
-start
diff --git a/infrastructure/docker/traffic_vault/Dockerfile 
b/infrastructure/docker/traffic_vault/Dockerfile
deleted file mode 100644
index a62c338f03..0000000000
--- a/infrastructure/docker/traffic_vault/Dockerfile
+++ /dev/null
@@ -1,53 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-############################################################
-# Dockerfile to build Riak container images
-#   as Traffic Vault for Traffic Control 1.6.0
-# Based on CentOS 6.6
-############################################################
-
-# Example Build and Run:
-# docker build --rm --tag traffic_vault:1.6.0 traffic_vault
-# docker run --name my-traffic-vault --hostname my-traffic-vault --net cdnet 
--env ADMIN_PASS=riakadminsecret --env USER_PASS=marginallylesssecret --env 
CERT_COUNTRY=US --env CERT_STATE=Colorado --env CERT_CITY=Denver --env 
CERT_COMPANY=Kabletown --env TRAFFIC_OPS_URI=http://my-traffic-ops:3000 --env 
TRAFFIC_OPS_USER=superroot --env TRAFFIC_OPS_PASS=supersecreterpassward --env 
DOMAIN=cdnet --detach traffic_vault:1.6.0
-
-FROM centos:6.6
-MAINTAINER [email protected]
-
-ARG ADMIN_PASS
-ARG USER_PASS
-
-# download and install Riak
-RUN curl -s 
https://packagecloud.io/install/repositories/basho/riak/script.rpm.sh | bash
-RUN yum install -y riak-2.1.1-1.el6.x86_64
-
-# Set the Riak certs in the config (this cert+key will be created in the 
run.sh script
-RUN sed -i -- 's/## ssl.certfile = $(platform_etc_dir)\/cert.pem/ssl.certfile 
= \/etc\/riak\/certs\/server.crt/g' /etc/riak/riak.conf
-RUN sed -i -- 's/## ssl.keyfile = $(platform_etc_dir)\/key.pem/ssl.keyfile = 
\/etc\/riak\/certs\/server.key/g' /etc/riak/riak.conf
-RUN sed -i -- 's/## ssl.cacertfile = 
$(platform_etc_dir)\/cacertfile.pem/ssl.cacertfile = 
\/etc\/riak\/certs\/ca-bundle.crt/g' /etc/riak/riak.conf
-
-RUN sed -i -- "s/nodename = [email protected]/nodename = [email protected]/g" 
/etc/riak/riak.conf
-RUN sed -i -- "s/listener.http.internal = 
127.0.0.1:8098/listener.http.internal = 0.0.0.0:8098/g" /etc/riak/riak.conf
-RUN sed -i -- "s/listener.protobuf.internal = 
127.0.0.1:8087/listener.protobuf.internal = 0.0.0.0:8087/g" /etc/riak/riak.conf
-RUN sed -i -- "s/## listener.https.internal = 
127.0.0.1:8098/listener.https.internal = 0.0.0.0:8088/g" /etc/riak/riak.conf
-
-RUN mkdir /etc/riak/certs
-
-RUN echo "tls_protocols.tlsv1.1 = on" >> /etc/riak/riak.conf
-
-EXPOSE 8098 8087 8088
-ADD run.sh /
-ENTRYPOINT /run.sh
diff --git a/infrastructure/docker/traffic_vault/run.sh 
b/infrastructure/docker/traffic_vault/run.sh
deleted file mode 100755
index 26010493c4..0000000000
--- a/infrastructure/docker/traffic_vault/run.sh
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/bin/bash
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-# 
-#   http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# Script for running the Dockerfile for Traffic Vault.
-# The Dockerfile sets up a Docker image which can be used for any new 
container;
-# This script, which should be run when the container is run (it's the 
ENTRYPOINT), will configure the container.
-#
-# The following environment variables must be set (ordinarily by `docker run 
-e` arguments):
-# ADMIN_PASS
-# USER_PASS
-# CERT_COUNTRY
-# CERT_STATE
-# CERT_CITY
-# CERT_COMPANY
-# TRAFFIC_OPS_URI
-# TRAFFIC_OPS_USER
-# TRAFFIC_OPS_PASS
-# DOMAIN
-# IP
-# GATEWAY
-# CREATE_TO_DB_ENTRY (If set to yes, create the TO db entry for this server if 
set to no, assume it it already there)
-
-start() {
-       /etc/init.d/riak restart
-       exec tail -f /var/log/riak/console.log
-}
-
-init() {
-       TMP_TO_COOKIE="$(curl -v -s -k -X POST --data '{ 
"u":"'"$TRAFFIC_OPS_USER"'", "p":"'"$TRAFFIC_OPS_PASS"'" }' 
$TRAFFIC_OPS_URI/api/4.0/user/login 2>&1 | grep 'Set-Cookie' | sed -e 
's/.*mojolicious=\(.*\); expires.*/\1/')"
-       echo "Got Cookie: $TMP_TO_COOKIE"
-#      curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" -F 
"filename=profile.traffic_vault.traffic_ops" -F 
"profile_to_import=@/profile.traffic_vault.traffic_ops" 
$TRAFFIC_OPS_URI/profile/doImport 
-
-       # \todo figure out a better way to get the IP, domain (Docker network 
name), gateway
-       TMP_IP=$IP
-       TMP_DOMAIN=$DOMAIN
-       TMP_GATEWAY=$GATEWAY
-
-       echo "Got IP: $TMP_IP"
-       echo "Got Domain: $TMP_DOMAIN"
-       echo "Got Gateway: $TMP_GATEWAY"
-
-       if [ "$CREATE_TO_DB_ENTRY" = "YES" ] ; then
-               TMP_CACHEGROUP_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/cachegroups.json | python 
-c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="mid-east"]; print match[0]')"
-               echo "Got cachegroup ID: $TMP_CACHEGROUP_ID"
-       
-               TMP_SERVER_TYPE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/types.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="RIAK"]; print match[0]')"
-               echo "Got server type ID: $TMP_SERVER_TYPE_ID"
-       
-               TMP_SERVER_PROFILE_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/profiles.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="RIAK_ALL"]; print match[0]')"
-               echo "Got server profile ID: $TMP_SERVER_PROFILE_ID"
-       
-               TMP_PHYS_LOCATION_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/phys_locations.json | 
python -c 'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="plocation-nyc-1"]; print match[0]')"
-               echo "Got phys location ID: $TMP_PHYS_LOCATION_ID"
-       
-               TMP_CDN_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/cdns.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["name"]=="cdn"]; print match[0]')"
-               echo "Got cdn ID: $TMP_CDN_ID"
-       
-               curl -v -k -X POST -H "Cookie: mojolicious=$TMP_TO_COOKIE" 
--data-urlencode "host_name=$HOSTNAME" --data-urlencode 
"domain_name=$TMP_DOMAIN" --data-urlencode "interface_name=eth0" 
--data-urlencode "ip_address=$TMP_IP" --data-urlencode "ip_netmask=255.255.0.0" 
--data-urlencode "ip_gateway=$TMP_GATEWAY" --data-urlencode 
"interface_mtu=9000" --data-urlencode "cdn=$TMP_CDN_ID" --data-urlencode 
"cachegroup=$TMP_CACHEGROUP_ID" --data-urlencode 
"phys_location=$TMP_PHYS_LOCATION_ID" --data-url [...]
-
-       fi
-
-       TMP_SERVER_ID="$(curl -s -k -X GET -H "Cookie: 
mojolicious=$TMP_TO_COOKIE" $TRAFFIC_OPS_URI/api/4.0/servers.json | python -c 
'import json,sys;obj=json.load(sys.stdin);match=[x["id"] for x in 
obj["response"] if x["hostName"]=="'"$HOSTNAME"'"]; print match[0]')"
-       echo "Got server ID: $TMP_SERVER_ID"
-
-       curl -v -k -H "Content-Type: application/x-www-form-urlencoded" -H 
"Cookie: mojolicious=$TMP_TO_COOKIE" -X POST --data-urlencode 
"id=$TMP_SERVER_ID" --data-urlencode "status=ONLINE" 
$TRAFFIC_OPS_URI/server/updatestatus
-
-       openssl req -newkey rsa:2048 -nodes -keyout /etc/riak/certs/server.key 
-x509 -days 365 -out /etc/riak/certs/server.crt -subj 
"/C=$CERT_COUNTRY/ST=$CERT_STATE/L=$CERT_CITY/O=$CERT_COMPANY"
-       cp /etc/riak/certs/server.crt /etc/riak/certs/ca-bundle.crt
-
-       /etc/init.d/riak restart
-       riak-admin security enable
-       riak-admin security add-group admins
-       riak-admin security add-group keysusers
-       riak-admin security add-user admin password=$ADMIN_PASS groups=admins
-       riak-admin security add-user riakuser password=$USER_PASS 
groups=keysusers
-       riak-admin security add-source riakuser 0.0.0.0/0 password
-       riak-admin security add-source admin 0.0.0.0/0 password
-       riak-admin security grant 
riak_kv.list_buckets,riak_kv.list_keys,riak_kv.get,riak_kv.put,riak_kv.delete 
on any to admins
-       riak-admin security grant riak_kv.get,riak_kv.put,riak_kv.delete on 
default ssl to keysusers
-       riak-admin security grant riak_kv.get,riak_kv.put,riak_kv.delete on 
default dnssec to keysusers
-       riak-admin security grant riak_kv.get,riak_kv.put,riak_kv.delete on 
default url_sig_keys to keysusers
-
-       echo "INITIALIZED=1" >> /etc/environment
-}
-
-source /etc/environment
-if [ -z "$INITIALIZED" ]; then init; fi
-start
diff --git a/misc/jira_github_issue_import.py b/misc/jira_github_issue_import.py
deleted file mode 100755
index 77953c3758..0000000000
--- a/misc/jira_github_issue_import.py
+++ /dev/null
@@ -1,238 +0,0 @@
-#!/usr/bin/env python
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-
-# Takes an XML file (created by JIRA issue export) and
-#  1) Performs dry-run to list labels and milestones that need to be manually 
created
-#  2) creates equivalent issues in github
-#
-
-import sys
-import argparse
-import xml.etree.ElementTree as ET
-import json
-import requests
-import logging
-import time
-
-logging.basicConfig(level=logging.INFO)
-repo_name = "apache/trafficcontrol"
-
-#
-# List of relevant JIRA field names
-#
-field_names = ['title', 'link', 'description', 'type', 'priority', 'status', 
'assignee',
-               'reporter', 'labels', 'fixVersion', 'component', 'resolution', 
'version']
-
-assignee_map = {
-    'Jan van Doorn' :'knutsel',
-    'Jeff Elsloo': 'elsloo',
-    'Jifeng Yang': 'jifyang',
-    'Dan Kirkwood' :'dangogh',
-    'David Neuman' :'dneuman64',
-    'Nir Sopher' :'nir-sopher',
-    'Jeremy Mitchell' :'mitchell852',
-    'Robert Butts' :'rob05c',
-    'Zhilin Huang' :'zhilhuan',
-    'Dewayne Richardson' :'dewrich',
-    'Rawlin Peters' :'rawlinp',
-    'Dylan Volz' :'DylanVolz',
-    'Matt Mills' :'MattMills',
-    'John Shen' :'weifensh',
-    'Derek Gelinas' :'dg4prez',
-    'Steve Malenfant': 'smalenfant',
-    'Hank Beatty': 'hbeatty',
-}
-
-milestone_map = {'2.1.0': 1,
-                 '2.2.0': 2,
-                 '3.x': 3}
-
-class GithubAPI(object):
-    ''' Base Class for callers of the Github v3API
-        
-        Handles authentication, rate limiting and sending proper headers
-    '''
-    def __init__(self, username, api_key, repo, gh_server="api.github.com"):
-        self.username = username
-        self.api_key = api_key
-        self.repo = repo
-        self.gh_server = gh_server
-        self._set_base_url()
-        self.abuse_delay = 3.5 # Github API allows only 20 requests per 60 
seconds
-
-    def set_github_server(self, server_name):
-        self.gh_server = server_name
-        self._set_base_url()
-
-    def _set_base_url(self):
-        self.base_url = str.format("https://{gh_server}/repos/{repo}";,
-                                   gh_server=self.gh_server,
-                                   repo=self.repo)
-
-        
-    def make_request(self, path, json_body, use_abuse_delay=False):
-        url = self.base_url + path
-        logging.debug("POST %s\n%s" % (url, json.dumps(json_body)))
-        rsp = requests.post(url,
-                            headers = {"Accept": 
"application/vnd.github.v3+json"},
-                            auth=requests.auth.HTTPBasicAuth(self.username,
-                                                             self.api_key),
-                            json=json_body)
-        for (name, val) in rsp.headers.iteritems():
-            logging.debug("%s:%s" % (name, val))
-        logging.debug(json.dumps(rsp.json()))
-                          
-        rsp.raise_for_status()
-        if int(rsp.headers['X-RateLimit-Remaining']) == 0:
-            wait_time = time.time() - int(rsp.headers['X-RateLimit-Reset'])
-            logging.warn("Pausing %d seconds for rate-limit" % (wait_time))
-            time.sleep(wait_time)
-
-        if use_abuse_delay:
-            time.sleep(self.abuse_delay)
-            
-        return rsp
-        
-    
-class GithubIssues(GithubAPI):
-    def __init__(self, username, api_key, repo):
-        super(GithubIssues, self).__init__(username, api_key, repo)
-
-        
-    def create_issue(self, issue):
-        rsp = self.make_request("/issues", issue, use_abuse_delay=True)
-        return rsp
-    
-
-class JiraIssueImporter(object):
-    def __init__(self, input_file):
-        self.input_file = input_file
-
-        
-    def parse(self):
-        self.tree = ET.parse(self.input_file)
-        self.root = self.tree.getroot()
-
-        
-    def collect_issues(self):
-        self.issue_list = list()
-        for item in self.root[0].findall('item'):
-            issue = dict()
-            for field in field_names:
-                if field == "labels":
-                    jira_list = item.find('labels').findall('label')
-                    issue['labels'] = [label.text for label in jira_list]
-
-                else:
-                    try:
-                        issue[field] = item.find(field).text
-                    except AttributeError:
-                        issue[field] = None
-                        logging.debug("Missing %s for item %s" % (field, 
item.find('title').text))
-
-            self.issue_list.append(issue)
-
-    def get_unique_values(self, field_name):
-        ''' Iterates over issues and returns list of unqiue values in a 
field'''
-        vals = {str(x[field_name]) for x in self.issue_list if x[field_name] 
is not None}
-        return vals
-
-    
-    def translate_issue_to_github(self, jira_issue):
-        ''' Translate JIRA format to Github format'''
-        new_issue = {}
-        new_issue['title'] = jira_issue['title']
-        new_issue['body'] = "%s\n\nAuthor: %s\nJIRA Link: <a 
href=\"%s\">%s</a>" % \
-                            (jira_issue['description'],
-                             jira_issue['reporter'],
-                             jira_issue['link'],
-                             jira_issue['link'])
-        if jira_issue['version'] is not None:
-            new_issue['body'] += "\nFound Version: %s" % 
(jira_issue['version'])
-
-        #if jira_issue['assignee'] != "Unassigned":
-        #    new_issue['assignees'] = [assignee_map[jira_issue['assignee']]]
-
-        if jira_issue['fixVersion'] is not None:
-                new_issue['milestone'] = 
milestone_map[jira_issue['fixVersion']]
-                
-        new_issue['labels'] = jira_issue['labels']
-        for extra_label in ['type', 'priority', 'component']:
-            if jira_issue[extra_label] is not None:
-                new_issue['labels'].append(jira_issue[extra_label])
-        return new_issue
-
-    
-    def translate_all_issues(self):
-        gh_issues = []
-        for i in self.issue_list:
-            gh_issues.append(self.translate_issue_to_github(i))
-            
-        return gh_issues
-
-def list_all(importer):
-    ''' Print list of unique values in JIRA fields'''
-    print "Listing all components and milestones"
-    print "Fields:\n ",
-    print '\n  '.join(field_names)
-    print
-
-    for field in field_names:
-        if field in ["description", "title", "link"]:
-            continue
-            
-        print "%s:\n " %(field),
-        print '\n  '.join(importer.get_unique_values(field))
-        print    
-    
-def main():
-    args = parse_command_line()
-    importer = JiraIssueImporter(args.input_file)
-    importer.parse()
-    importer.collect_issues()
-
-    if args.list_all:
-        list_all(importer)
-
-    else:
-        gh_issues =  importer.translate_all_issues()
-        gh_api = GithubIssues(args.username, args.api_key, repo_name)
-        for (idx, issue) in enumerate(gh_issues):
-            logging.info("Creating Issue (%d/%d): %s" % (idx, len(gh_issues), 
issue['title']))
-            try:
-                gh_api.create_issue(issue)
-            except requests.exceptions.HTTPError as e:
-                
-                raise e
-
-            
-def parse_command_line():
-  parser = argparse.ArgumentParser(description='Import JIRA issues from XML 
file into Github')
-  parser.add_argument('input_file', help='path to input XML file')
-  parser.add_argument('username', help='Github Username')
-  parser.add_argument('api_key', help='Github username/Personal Access Token') 
 
-  parser.add_argument('--list-all',
-                      action='store_true',
-                      help='List all issues and milestones in JIRA')
-
-
-  args = parser.parse_args()
-  print "Reading input from: %s" % (args.input_file)  
-  return args    
-
-    
-if __name__ == '__main__':
-  main()
diff --git a/traffic_ops/build/traffic_ops.spec 
b/traffic_ops/build/traffic_ops.spec
index d6d93505f9..fbd53e4313 100644
--- a/traffic_ops/build/traffic_ops.spec
+++ b/traffic_ops/build/traffic_ops.spec
@@ -63,9 +63,6 @@ cp "${TC_DIR}/LICENSE" %{_builddir}
 # avoid detecting LICENSE as an unpackaged RPM file
 rm LICENSE
 
-# update the go version referenced in install_go.sh
-sed -i.bak 's/__GO_VERSION__/%{go_version}/g' install/bin/install_go.sh
-
 # copy traffic_ops_golang binary
 godir=src/github.com/apache/trafficcontrol/traffic_ops/traffic_ops_golang
 ( mkdir -p "$godir" && \
diff --git a/traffic_ops/install/bin/_postinstall.py 
b/traffic_ops/install/bin/_postinstall.py
index ddb1930fa1..5b30e8fe3f 100755
--- a/traffic_ops/install/bin/_postinstall.py
+++ b/traffic_ops/install/bin/_postinstall.py
@@ -1336,8 +1336,7 @@ no_database, # type: bool
                        logging.error("Missing database connection variable: 
%s", e)
                        logging.error(
                                "Can't connect to the database.  " \
-                               "Use the script 
`/opt/traffic_ops/install/bin/todb_bootstrap.sh` " \
-                               "on the db server to create it and run 
`postinstall` again."
+                               "Make sure traffic_ops database and username 
exist in postgres."
                        )
                        return 1
 
@@ -1349,8 +1348,7 @@ no_database, # type: bool
                        logging.error("Failed to set up database: %s", e)
                        logging.error(
                                "Can't connect to the database.  "
-                               "Use the script 
`/opt/traffic_ops/install/bin/todb_bootstrap.sh` "
-                               "on the db server to create it and run 
`postinstall` again."
+                               "Make sure traffic_ops database and username 
exist in postgres."
                        )
 
                try:
diff --git a/traffic_ops/install/bin/install_go.sh 
b/traffic_ops/install/bin/install_go.sh
deleted file mode 100755
index 10ae7ebc15..0000000000
--- a/traffic_ops/install/bin/install_go.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env bash
-
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-GO_DOWNLOADS_URL=https://dl.google.com/go
-GO_TARBALL_VERSION=__GO_VERSION__
-GO_TARBALL_URL=$GO_DOWNLOADS_URL/$GO_TARBALL_VERSION
-
-GO_TARBALL_VERSION_SHA_FILE=$GO_TARBALL_VERSION.sha256
-GO_TARBALL_VERSION_SHA_URL=$GO_DOWNLOADS_URL/$GO_TARBALL_VERSION_SHA_FILE
-INSTALL_DIR=/usr/local
-GOROOT=$INSTALL_DIR/go
-GO_BINARY=$GOROOT/bin/go
-
-# Make sure git is installed before proceeding
-yum -y install git
-
-rm -rf /usr/local/go
-
-cd /tmp
-rm $GO_TARBALL_VERSION
-rm $GO_TARBALL_VERSION_SHA_FILE
-curl -O $GO_TARBALL_URL
-curl -O $GO_TARBALL_VERSION_SHA_URL
-
-echo $GO_TARBALL_VERSION_SHA_FILE
-sha256sum -c <(cat $GO_TARBALL_VERSION_SHA_FILE; echo " ./$GO_TARBALL_VERSION")
-
-if [[ $? ]]; then
-    cd /usr/local
-    echo "Extracting go tarball to $INSTALL_DIR/go"
-    tar -zxf /tmp/$GO_TARBALL_VERSION
-else
-    echo "Checksum failed please verify $GO_TARBALL_VERSION against 
$GO_TARBALL_VERSION_SHA_FILE"
-fi
diff --git a/traffic_ops/install/bin/install_goose.sh 
b/traffic_ops/install/bin/install_goose.sh
deleted file mode 100755
index 5d4a3847f5..0000000000
--- a/traffic_ops/install/bin/install_goose.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env bash
-
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-<<'MESSAGE' cat >/dev/stderr
-Traffic Ops no longer uses goose. install_goose.sh no longer installs goose and
-will be removed in a future Traffic Control release.
-MESSAGE
diff --git a/traffic_ops/install/bin/todb_bootstrap.sh 
b/traffic_ops/install/bin/todb_bootstrap.sh
deleted file mode 100755
index 23fa5cee7e..0000000000
--- a/traffic_ops/install/bin/todb_bootstrap.sh
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/env bash
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# To bypass the password prompts for automation, please set 
TODB_USERNAME_PASSWORD=<yourpassword> before you invoke
-
-# Example:
-#
-#    $ TODB_USERNAME_PASSWORD=<yourpassword> ./todb_bootstrap.sh
-#
-
-trap 'echo "Error on line ${LINENO} of ${0}"; exit 1' ERR
-set -o errexit -o nounset
-
-TODB_USERNAME=traffic_ops
-TODB_NAME=traffic_ops
-
-if [[ -z $TODB_USERNAME ]]; then
-    echo "Using environment database user: $TODB_USERNAME"
-fi
-
-if [[ -z $TODB_USERNAME_PASSWORD ]]; then
-   while true; do
-    read -rsp "Please ENTER the new password for database user 
'$TODB_USERNAME': " password
-    echo
-    read -rsp "Please CONFIRM enter the new password for database user 
'$TODB_USERNAME' again: " password_confirm
-    echo
-    [ "$password" = "$password_confirm" ] && break
-    echo "Passwords do not match, please try again"
-   done
-   TODB_USERNAME_PASSWORD="$password"
-else
-    echo "Using environment database password"
-fi
-echo "Setting up database role: $TODB_USERNAME"
-psql -U postgres -h localhost -c "CREATE USER $TODB_USERNAME WITH ENCRYPTED 
PASSWORD '$TODB_USERNAME_PASSWORD';"
-createdb $TODB_NAME --owner $TODB_USERNAME -U postgres -h localhost
-
-echo "Successfully set up database '$TODB_NAME' with role '$TODB_USERNAME'"

Reply via email to