Commit Graph

461 Commits

Author SHA1 Message Date
Shuotian Cheng
7b7a61693a [sonic-cfggen]: Add -p option and add teamd.j2 test (#414)
- Add -p --port-config option to feed sonic-cfggen with port_config.ini
  file when necessary.
- Update minigraph.py file to accept the -p option
- Add test_j2files.py test to test config.sh and all .j2 templates
  * Currently test_teamd is added to test both the config.sh and teamd.j2
    file works well with the t0 sample minigraph and sample port config
    file
  * The sample output is added to the folder sample_output for comparison

Signed-off-by: Shuotian Cheng <shuche@microsoft.com>
2017-03-17 21:38:20 -07:00
Shuotian Cheng
783be14a5d [minigraph]: Add portchannels/vlans dictionary and update teamd templates (#408)
- minigraph_portchannel_interfaces and minigraph_vlan_interfaces are lists
  of interfaces and the name could duplicate due to multiple IPs
- Add minigraph_portchannels and minigraph_vlans dictionaries to support
  querying port channels and vlans via the name
- Update teamd.j2 template and config.sh file in docker-teamd
- Update zebra.conf.j2 template to add port channel interfaces

Signed-off-by: Shuotian Cheng <shuche@microsoft.com>
2017-03-17 16:48:13 -07:00
Taoyu Li
3643281594 [cfggen] Add tool to translate openconfig acl into sonic format (#388)
* Build sonic-config-engine as whl instead of deb package
* Add tool to translate openconfig acl into sonic format
2017-03-17 14:51:42 -07:00
Shuotian Cheng
05e6b3611d [interfaces]: Combine vlan_interfaces and lag_interfaces file and add allow-hotplug (#381)
* [files]: Add allow-hotplug stanza to interfaces files

- start interface <interface_name> when the kernel detects
a hotplug event from the interface

ref: https://www.debian.org/doc/manuals/debian-reference/ch05.en.html

* [interfaces]: Combine vlan_interfaces and lag_interfaces file and add allow-hotplug

1. Remove vlan_interfaces and lag_interfaces file and members in teamd.j2
2. Add all interfaces to /etc/network/interfaces file
3. Add allow-hotplug stanza
4. Add up <command> to automatically add interfaces to VLAN and LAG
5. Add unique_name filter to minigraph.py to remove duplicate interface names
6. Add brctl to base image
7. Update sonic-swss submodule

Signed-off-by: Shuotian Cheng <shuche@microsoft.com>
2017-03-16 11:22:40 -07:00
Joe LeVeque
d6bfa505b3 Wait for VLAN interface to come up before starting DHCP relay (#399) 2017-03-16 10:40:33 -07:00
Marian Pritsak
4c65682478 [orchagent]: Add swssloglevel shortcut in base image (#386)
Signed-off-by: marian-pritsak <marianp@mellanox.com>
2017-03-07 23:00:58 -08:00
Taoyu Li
bd6bf1ff9a [config] [oneimage & dhcp relay docker] Move ntp, rsyslog, and dhcp server information into minigraph (#374)
Move DHCP, rsyslog, and NTP server information into minigraph


* Fix dhcp relay template according to CR
2017-03-06 12:41:26 -08:00
Joe LeVeque
5dafa907b2 [dockers]: Add base image files to syncd-brcm, database and teamd (#380) 2017-03-06 12:22:42 -08:00
Min Yao
b9c624520e Support centec platform (#376) 2017-03-04 02:17:38 -08:00
Nadiya
701d5ddb8a Add cavm saiserver (#137) 2017-03-04 01:56:41 -08:00
lguohan
80e3dc0df7 [device]: add missing sai profile and minigraph for the supported devices (#362)
change orchagent start.sh to use mounted hwsku directory
2017-03-02 23:53:20 -08:00
Shuotian Cheng
f9d8137975 [teamd]: Add redis-tools as the dependency of docker-teamd and fix bugs (#363)
- Fix the if condition bug to wait till PORT_TABLE:ConfigDone before start

Signed-off-by: Shuotian Cheng <shuche@microsoft.com>
2017-03-02 18:07:43 -08:00
Shuotian Cheng
f06dc5d3f9 [teamd]: Update the start.sh script to clean up the docker state (#351)
This change should be temporary because the current teamd cannot
re-create net devices acrosss restart. Basically, it will fail
when there're files in /var/run/teamd/ folder or the previously
created net devices are still there. Thus, the current workaround
is to remove the obsolete files to restart the docker-teamd.

This workaround cannot resolve the swss restart issue. Before
restarting swss, docker teamd needs to be stopped manually. After
swss starts, docker teamd needs to be restarted manually.

This change will only make sure that rebooting the switch will
make the switch at the correct state.

Signed-off-by: Shuotian Cheng <shuche@microsoft.com>
2017-03-02 15:59:16 -08:00
pavel-shirshov
bac738f91f Add bgp container with gobgp (#358)
* Add go-1.7 into docker-slave

* Create container docker-fpm-gobgp with gobgpd inside
2017-03-02 11:33:46 -08:00
Shuotian Cheng
2a2af6a44e [orchagent]: Update start.sh to combine td2 qos/buffers config (#344)
Signed-off-by: Shuotian Cheng <shuche@microsoft.com>
2017-03-01 18:23:28 -08:00
Taoyu Li
903499000f [docker-teamd] fix a config bug introduced in #345 (#353) 2017-03-01 14:32:52 -08:00
Shuotian Cheng
ad1b581111 [docker]: Add -c option in teamd docker Dockerfile (#348)
CMD is not longer a file name but a command that needs to be executed,
thus /bin/bash is not enough for the entrypoint and -c is needed.

Signed-off-by: Shuotian Cheng <shuche@microsoft.com>
2017-02-28 13:36:59 -08:00
Taoyu Li
d9b1000e6c [cfggen] Add support in -v for jinja2 expression (#345)
* Add support in -v for jinja2 expression
* Format json output
2017-02-28 10:52:56 -08:00
lguohan
b21d26dfe0 [platform]: add support for Force10-Z9100 32x100G (#332)
* [platform]: add support for Force10-Z9100 32x100G

* update sonic-swss submodule

* [broadcom]: update broadcom sai/sdk
2017-02-24 08:35:11 -08:00
Taoyu Li
a16c780285 [teamd] Fix a bug in #305 that will break teamd (#329) 2017-02-23 14:47:51 -08:00
pavel-shirshov
151a7d2a90 Apply buffer/qos configuration for mlnx platform (#321) 2017-02-23 11:21:11 -08:00
Taoyu Li
95ad5c79fd Fix the reference in docker-snmp-sv2 to deprecated alias_map.json (#320) 2017-02-22 14:28:37 -08:00
kaiyu22
b5f9fcae99 [platform]: ingrasys-s9100: Add ingrasys switch s9100 (#318)
Signed-off-by: Sam Yang <yang.kaiyu@gmail.com>
2017-02-22 02:15:39 -08:00
antonpatenko
a2b4bcbb61 [docker-base]: Enabled common debug packages installation. (#292) 2017-02-21 19:04:43 -08:00
Samuel Angebault
f57fd0bee8 [platform] Add support configurations files for DCS-7060CX-32S (#313) 2017-02-21 13:37:07 -08:00
Taoyu Li
073c28bf15 Move template files to /usr/share/sonic/templates (#305) 2017-02-18 17:50:29 -08:00
pavel-shirshov
a845740543 [All Dockerfiles]: Prevent apt asking questions on the console (#300)
Add noninteractive setting into every Dockerfile in the repo

Signed-off-by: Pavel Shirshov pavelsh@microsoft.com
2017-02-16 21:48:49 -08:00
Shuotian Cheng
877291ae91 [docker-teamd]: Automatically start the processes after host interfaces are created (#278)
Signed-off-by: Shuotian Cheng <shuche@microsoft.com>
2017-02-15 08:54:10 -08:00
Taoyu Li
7e9f6b4e12 Remove /etc/default/snmpd from snmp docker (#294) 2017-02-13 17:52:29 -08:00
Taoyu Li
ecc9f0c6d8 Properly pull vlan subnet from minigraph when writing bgpd.conf (#293) 2017-02-13 14:17:22 -08:00
antonpatenko
6a6f5a66a8 [docker-base]: unsubmodule docker-base. (#275)
Convert docker-base from submodule into a regular directory.
2017-02-12 18:02:04 -08:00
Qi Luo
815bf53de7 snmpd disables inetCidrRouteTable module (#286) 2017-02-10 10:40:09 -08:00
Qi Luo
822680d21b Build python3.6 deb packages and install them into docker-snmp-sv2 (#245) 2017-02-08 22:02:21 -08:00
lguohan
b6753e7960 [docker-config-engine]: introduce docker sonic config engine (#274)
* [docker-config-engine]: introduce docker sonic config engine

sonic config engine provide the sonic configure engine for all sonic
dockers that rely on the engine to generate runtime configuration.
2017-02-07 18:11:19 -08:00
Oleksandr Ivantsiv
53a9792014 [Makefile]: Add possibility for docker containers to install files to base image (#240)
- Add vtysh/lldpctl/sensors to baseimage
2017-02-07 00:33:20 -08:00
Joe LeVeque
522585aadf [docker-fpm]: T0 devices receive routes containing one occurrence of their own ASN (#271) 2017-02-07 00:28:30 -08:00
Joe LeVeque
12fa107645 Revert "Revert "Conform with new Docker build method"" (#264) 2017-02-06 08:40:57 -08:00
Taoyu Li
b2e44834f1 SNMP will now bind on 0.0.0.0 if mgmt ip not specified in minigraph (#253)
Fix an issue that snmp will fail to start if mgmt ip is not specified in minigraph (e.g. default graph in oneimage where mgmt ip is from DHCP)
2017-02-03 21:01:34 -08:00
lguohan
68270f36df [build break]: Revert "Conform with new Docker build method" (#257) 2017-02-03 20:15:55 -08:00
Shuotian Cheng
00fe0784b4 [Broadcom]: Update Broadcom debian packages and m3000-r0 m3000-r1 config.bcm files (#251)
Signed-off-by: Shuotian Cheng <shuche@microsoft.com>
2017-02-03 19:44:00 -08:00
Taoyu Li
6f5262bc2c Fix config bug in snmp (#252)
1. Modify snmp user to Debian-snmp to fit snmpd 5.7.3
2. Fix a bug that cause sysLocation to be missing from snmpd.conf
2017-02-03 17:39:09 -08:00
Joe LeVeque
76cfd672d1 Conform with new Docker build method (#250) 2017-02-03 14:21:57 -08:00
Joe LeVeque
b85c8dc89e Fix isc-dhcp-relay template (#246) 2017-02-02 21:10:07 -08:00
Taoyu Li
60e1fc3c98 ONEImage - Read all platform dependent information from sonic-config-engine (#238)
Read all platform dependent information from sonic-config-engine
2017-02-02 20:34:34 -08:00
Joe LeVeque
4cd3d31946 Update APT package lists before first attempt to install (#241)
* Update APT package lists before first attempt to install
* Move setting of environment variable before first call to apt-get
2017-02-02 11:12:04 -08:00
Joe LeVeque
61d4509f0b Add new sonic-config dependencies to dhcp_relay Dockerfile (#237) 2017-02-01 21:29:50 -08:00
Andriy Moroz
ddbda4ce2e docker: Add ipaddress python module to the PTF docker (#231)
Needed for the FIB test
2017-02-01 12:49:43 -08:00
Taoyu Li
1c074367a1 Add daemon file which was missing in docker-fpm (#229) 2017-02-01 00:10:40 -08:00
Taoyu Li
be8ed80554 teamd: Use 75% links upperbound as min-links (#224) 2017-01-30 17:33:03 -08:00
Oleksandr Ivantsiv
f2eed8f8a0 Added support of ONIE version 2016.11-5.1.0001 for Mellanox platforms. (#218) 2017-01-29 11:34:12 -08:00
Oleksandr Ivantsiv
34ea91349c one image implementation (#215)
* Single image

* Fix review comments

* Update syncd service. Add HW mgmt to Mellanox single image.

* Add single image template for Broadcom platform.

SKU should be provided during configure:
make configure PLATFORM=broadcom SKU=Force10-S6000

* Add single image template for Cavium platform.

SKU should be provided during configure:
make configure PLATFORM=cavium SKU=AS7512

* Add description to sonic_debian_extension.j2 file.
2017-01-29 11:33:33 -08:00
Joe LeVeque
c18b65bc16 Refactor DHCP relay docker in sonicv2 style (#217)
* Refactor DHCP relay docker in sonicv2 style
2017-01-26 23:36:58 -08:00
Joe LeVeque
608980524f [docker]: Install dpkt Python package in PTF docker (#216) 2017-01-25 18:19:15 -08:00
Taoyu Li
e87498d16d Add platform config for 7050 and 6100 (#212)
* Add platform config for 7050 and 6100

* allow certain platform to have no sensors.conf file in sonic-cfggen
2017-01-25 18:18:25 -08:00
Taoyu Li
1b49499b65 [docker]: Add a status file to mark that the file is generated by sonic-config-engine (#211) 2017-01-24 19:16:55 -08:00
Taoyu Li
9b940c3b3d Remove apt purge which wrongly remove sonic-config-engine (#204) 2017-01-21 10:30:39 -08:00
Joe LeVeque
78f11a7ff3 [docker]: Make line breaks consistent in DHCP relay Dockerfile (#203) 2017-01-20 22:33:11 -08:00
Oleksandr Ivantsiv
ea65962fe4 Fix compilation issue. (#198)
Fix docker-platform-monitor compilation issue.
Update .gitignore file
2017-01-20 13:55:42 -08:00
Taoyu Li
4fe1bdcf87 sonic-cfggen with sonicv2 dockers (#190)
Add a sonic-config-engine to help generate config file based on minigraph and other data on runtime. Modify fpm, teamd, lldp, snmp, and platform-monitor docker to use sonic-config-engine to generate config in docker upon load.
2017-01-19 20:56:26 -08:00
Oleksandr Ivantsiv
80d0d2d43b Reduce docker images size. (#196)
* Reduce docker images size.

Install only required dependencies.

* Update Dockerfile.j2
2017-01-19 12:19:21 -08:00
Pavel Shirshov
86f5c19643 [docker]: docker-ptf doesn't wait until eth3 is up
This is done inside ptf agent now
2017-01-17 14:40:35 -08:00
marian-pritsak
43b0e502de Add recipe for ptf docker 2017-01-05 14:39:07 -08:00
Marian Pritsak
61496a5959 [docker]: Remove obsolete dockers (#175)
docker-syncd-mlnx and docker-syncd-cavm were moved
to platform directories
2016-12-30 13:35:04 -08:00
Marian Pritsak
cb13166596 [docker-teamd]: rename docker-team to docker-teamd (#174) 2016-12-30 13:34:38 -08:00
Marian Pritsak
66aebb329c [docker]: Change templating method to jinja2 (#115) (#153)
Move from sed to jinja2 for more readability.
2016-12-23 15:22:06 -08:00
Qi Luo
a01d484087 [docker-base] Update git submodule hash (#150) 2016-12-21 20:30:26 -08:00
Qi Luo
2380359059 Add apt update in Dockerfile, since cached lists file may be obsoleted (#149)
[docker]: Add apt update in Dockerfile, since cached lists file may be obsoleted
2016-12-21 18:20:46 -08:00
lguohan
c07e54c3e1 [platform-monitor] update apt cache (#148) 2016-12-21 15:16:18 -08:00
lguohan
3c01b398f4 [docker]: add support for Force10-S6100 (#145) 2016-12-20 13:29:00 -08:00
Qi Luo
8886fc8286 Fix build: install libjemalloc1 when build docker images (#128)
* Fix build: install libjemalloc1 when build docker images

* (comment)
2016-12-15 16:48:22 -08:00
lguohan
98e3479e26 build orchagent and syncd docker on broadcom platform (#118)
* build orchagent and syncd docker on broadcom platform
2016-12-14 14:33:07 -08:00
Marian Pritsak
e6aadeb9f8 Update Dockerfile.template (#95) 2016-12-06 06:32:12 -08:00
Marian Pritsak
e9098b99fb Build improvements (#80)
* Build improvements

Fix dependencies
Add configuration options
Automatically build sonic-slave

* Set default number of jobs to 1

* Auto generate target/debs directory

Signed-off-by: marian-pritsak <marianp@mellanox.com>

* Automatically remove sonic-slave container after exit

* Silence clean-logs

* Add SONIC_CLEAN_TARGETS to clean

* Use second expansion for clean dependencies

* Avoid creating empty log files

Remove log file on flush instead of writing empty string

* Put dpkg install inside lock

Use same lock as debian install targets do to avoid
race condition in dpkg installation

* Remove redirect to log from docker save

* Add .platform dependency to all and clean targets

* Remove header and footer from clean targets

* Disable messages for SONIC_CLEAN_TARGETS

* Exit with error if dpkg-buildpackage fails

* Set new location for debs in build_debian.sh

* Add recipe for docker-database

* Update redis version to 3.2.4

* Add support for p4 platform

* Add recipe for snmpd

* Add slave targets to phony and make all target default

* Remove build.sh from thrift

* Add versioning to team, nl, hiredis and initramfs

* Change sonic-slave to support snmpd build from sources

* Remove src/tenjin

* Add recipe for lldpd

* Add recipe for mpdecimal

* Remove hiredis directory on rebuild

* Add recipe for Mellanox hw management

* Remove generic image from all targets for Mellanox

* Add support for python wheels

* Add lldp and snmp dockers

* Sync docker-database to include libjemalloc

* Fix asyncsnmp variable name

* Change default build configuration

Redirect output to log files by default
Set number of jobs to nproc value
Do not print dependencies
Fix logging to print log of failed job into console

* Use docker inspect to check if sonic-slave image exists

* Use config in slave.mk directly

* Disable color output by default

* Remove sswsdk dependency from lldp and snmp dockers

* Fix comment in py wheels install targets

* Add dependency between two versions of sswsdk

* Add containers to mellanox platform

lldp, snmp and database containers

* Add recipe for team docker

* Add team docker to mellanox platform

* Encrypt password passed to build_debian.sh

* Update mellanox SAI version

Make version and revision setting only in main recipe

* Fix error handling in makefiles

As makefiles use .ONESHELL we should add -e
option to shell options in order to exit after any command fails

* Add recipe for platform monitor image

* Add platfotm monitor to mellanox targets

* Ignore submodules when building base image
2016-12-05 11:12:19 -08:00
Taoyu Li
55ee247f02 Change to thrift 0.9.3 for docker-mlnx-sswstncd-rpc, docker-syncd-mlnx-rpc, and docker-syncd-rpc (#86) 2016-11-29 17:39:30 -08:00
Taoyu Li
c3257e1a9c Modify docker_ptf and docker_saiserver_mlnx to use libthrift0.9.3 (#84) 2016-11-29 14:16:55 -08:00
Denys Haryachyy
57ff53ea60 docker-syncd-cavm : Added synchronization between syncd and redis (#79) 2016-11-28 12:14:27 -08:00
mbrar
691b787811 dockers: Add DHCP Relay docker (#38) 2016-11-23 16:09:43 -08:00
Qi Luo
5621082dbb LLDP docker: Remove outdated dependency (#73) 2016-11-21 17:44:16 -08:00
Pavel Shirshov
af5c61c73a Add set rcv buffer for syncd rpc (#64) 2016-11-14 12:03:56 -08:00
Qi Luo
21c8322055 Change redis conf: listen on unix socket (#66)
By default, redis-server is listening on localhost TCP port. This
change will make it also listen to the domain socket (unix socket),
which will have better client-server performance.
2016-11-14 11:29:31 -08:00
Qi Luo
f8524e74f5 Fix dependencies in Dockerfiles (#65) 2016-11-11 12:09:25 -08:00
lguohan
5c44521c5f update asic firmware version to 13.1200.0116 2016-11-09 19:50:53 -08:00
Oleksandr Ivantsiv
0d10feca11 Added libteam5 package to orchagent docker to resolve instalation dependencies. (#62) 2016-11-07 08:57:59 -08:00
Oleksandr Ivantsiv
0b80c625c4 Fix issue with team docker build (#59)
Added required docker-team dependency to Makefile to copy dep packages
to dockers/docker-team/deps/ directory. Changed order of deb packages
installation to fix dependency issue.
2016-11-04 10:17:12 -07:00
Taoyu Li
ce895ee228 Add ptf docker with saithrift installed (#58) 2016-11-03 14:11:11 -07:00
Pavel Shirshov
aed2ab5b7a Install supervisor to docker-ptf 2016-11-02 18:27:27 -07:00
Qi Luo
e89c7be76d Install redis-server>=3.2.4 in docker-database image (#46)
* Install redis-server>=3.2.4

* Reformat

* Build redis from source code

* Add Makefile var: REDIS_VERSION
2016-10-31 21:50:59 -07:00
Pavel Shirshov
ac64c1c29b Address CR suggestions 2016-10-31 14:48:27 -07:00
Pavel Shirshov
62af66a1f0 Add a pause before pushing port configuration 2016-10-31 14:48:27 -07:00
Pavel Shirshov
30438bb987 update port configurations in lldpd as soon as port created 2016-10-31 14:48:27 -07:00
Taoyu Li
b2322d1748 Modification to saiserver-brcm/Dockerfile (#45) 2016-10-28 15:19:51 -07:00
thomasbo
135ba232ca SNMP/LLDP Containers: Sonic V2 Support (#41)
* Adding support for V2 in SNMP/LLDP (-sv2 postfix)
* Fixes for V1 containers: logging
* Fixes for V1 LLDP: limit LLDP to Front-panel or MGMT interfaces.
2016-10-28 15:19:29 -07:00
Taoyu Li
23542f3e02 Add docker configuration for saiserver-brcm (#44) 2016-10-27 18:02:32 -07:00
Shuotian Cheng
c4630f54c7 Dockerfile: Add bridge-utils to p4 docker (#43) 2016-10-26 21:27:31 -07:00
Shuotian Cheng
515346abf4 Dockerfile: Add libsaimetadata dependency (#42)
* Dockerfile: Add libsaimetadata dependency
* Makefile: Add saimetadata
2016-10-26 15:19:41 -07:00
pavel-shirshov
293db92550 Apply swss configuration in a deterministic way (#39)
* Apply swss configuration in determine way
* Apply configs in small chunks
* Add qos settings for Arista
2016-10-24 14:05:56 -07:00
Shuotian Cheng
93852194eb start.sh: Remove rsyslogd.pid file on mlnx syncd docker (#35) 2016-10-19 14:39:44 -07:00
Marian Pritsak
51fa77fa8d Automatic fw upgrade for mlnx platform (#31)
* Automatic fw upgrade for mlnx platform

Implement script for firmware upgrade to required version
Add firmware binary and script to ops-syncd-mlnx container
Add pciutils and usbutils to sonic-generic.bin

* Update firmware installation message

It is possible to do both upgrade and downgrade
Change "Upgrading" to "Installing compatible version"

Signed-off-by: marian-pritsak <marianp@mellanox.com>
2016-10-18 11:40:20 -07:00
lguohan
d5696f742d Add support for Arista a7050 qx32 platform (#30) 2016-10-09 18:05:24 -07:00
Shuotian Cheng
dcf691ecaa Add libnl-nf-3-200 to docker-team (#28) 2016-10-09 14:40:55 -07:00
Shuotian Cheng
4373c518cf libteam: Adding build.sh script and docker-team (#18) 2016-10-07 10:41:44 -07:00
Oleksandr Ivantsiv
28fa109e42 Changed docker-syncd-mlnx docker-saiserver-mlnx dependencies to use libnl provided by build system instead of sx-libnl. (#26) 2016-10-05 11:18:37 -07:00
Pavel Shirshov
94ae04d2a7 Use cffi version 1.7.0. Newest versions doesn't work with nanomsg 2016-10-04 16:36:02 +00:00
Denys Haryachyy
144114c301 Makefile : Added swss and libnl into cavm orchagent dependencies (#24)
* Makefile : Added swss and libnl into cavm orchagent dependencies

* docker-orchagent/start.sh : Removed Cavium specific copp config
2016-10-02 19:25:58 -07:00
lguohan
8bf3ae9ae9 Chang port_config.ini directory for s6000 (#19) 2016-09-30 04:20:17 +00:00
lguohan
7c0ff3e9e3 build p4-based sonic docker (#14)
* add docker-sonic for p4 switch

* update build instructions
2016-09-28 11:15:02 -07:00
Denys Haryachyy
9c3b7ccaf7 Add support for cavium SAI (#5) 2016-09-25 21:48:25 -07:00
lguohan
146c88100b add saiserver docker for mlnx sn2700 platform (#12)
* add saiserver docker for mlnx sn2700 platform
2016-09-23 21:23:43 -07:00
Shuotian Cheng
623fdbf7f6 Updating docker-orchagent/syncd Dockerfile and start.sh (#9) 2016-09-22 16:16:26 -07:00
Qi Luo
cc7f15094c Squashed merge master 2016-09-09 17:53:41 -07:00
Qi Luo
e4bd20c18a Squash merge master (11de390) 2016-08-04 10:39:33 -07:00