chef-boneyard / knife-rackspace Goto Github PK
View Code? Open in Web Editor NEWChef knife plug-in for Rackspace
Home Page: https://github.com/chef/knife-rackspace
License: Apache License 2.0
Chef knife plug-in for Rackspace
Home Page: https://github.com/chef/knife-rackspace
License: Apache License 2.0
I found that chef-client on Windows 2012R2 would fail horribly with checksum offloading enabled. Is there a knife rackspace command to disable this?
The following should ideally work:
# ~/.chef/knife.rb
require 'fog'
knife.merge! Fog.credentials
But the Fog key :rackspace_username
does not match up with the Knife key :rackspace_api_username
.
Could there be a knife rackspace load balancer [create | destroy | etc] to manage Rackspace cloud load balancers?
See also:
We should do a release that includes #127 after testing. It's probably a breaking change.
I am trying to use --rackspace-metadata argument to specify load balancer pool name .
--rackspace-metadata '{"RackConnectLBPool": "POOL-test"}'
It fails with an exception, however server is created (p.s, bootstrap does not happen as knife is interrupted)
ERROR: knife encountered an unexpected error
Exception: NoMethodError: undefined method `gsub' for 2:Fixnum
Is this a bug or is it related to issue with the value passed in the argument?
Hi guys,
I'm trying to create a new cloud server using knife-rackspace 0.11.0 with the following command:
knife rackspace server create --bootstrap-network private --rackconnect-wait --run-list recipe[new-web-node::default] --rackspace-metadata "{"RackConnectPublicIP" : "x.x.x.x"}" --server-name webtest --node-name webtest --flavor compute1-15 --image c25f1ae0-30b3-4012-8ca6-5ecfcf05c965
getting this error:
ERROR: Fog::Compute::RackspaceV2::BadRequest: [HTTP 400 | req-ce8beb1b-e329-47e0-928c-9cdc1a384f42] Invalid imageRef provided. -
I tried with -I instead of --image same result. also tested different image ID's with no success. Tried adding -B option without parameter (I don't have a block storage boot ID yet) but still getting same error.
From what I understand using the -I flag should be enough. Reading from #95
"Since this option is explicitly for preexisting boot volumes, this
commit also makes the -I flag smart enough to know whether it should
create the server passing the :image_id configuration option or whether
it should create the server passing the :boot_image_id option."
my chef version is: chef-11.10.4-1.el6.x86_64
I have no fancy config option in knife.rb btw
Re: #114
Running knife rackspace server create:
This was only a problem with the Ubuntu 14.04 image, but it failed every time to ssh without trying more than once.
I looked at the code and found that in the tcp_test_ssh function was trying to read it from Chef::Config[:knife][:retry_ssh_limit] rather than config[:retry_ssh_limit], so limit was always 0 and the rescue code was never run.
I worked round it by setting the value in knife.rb, but this is definitely a bug.
If possible, set the user agent header to be prepended with knife/{version}
so we know when and how Knife is being used on Rackspace.
So I figured I should at least post this...There is a helper gem called knife-cloud and it would be neat to see more plugins starting to use it.
All the "newer" knife plugins use it, knife-vro
, knife-vra
, knife-openstack
, and we're in the process of trying to get knife-digital_ocean
to use it.
Any chance yall can refactor to getting support for it? There are a lot of good helper methods and systems inside it.
It looks like Rackspace has changed their cloud server types, adding "Compute" and "Memory" flavors and replacing the performance tiers with "General Purpose" and "I/O". The newer flavors only support using a remote cloud block device as the boot volume. As a result, knife rackspace can't create these, since it seems the API call to create the server now requires the UUID of a cloud block storage volume prepared with an image.
For instance, when I attempt to pass 'compute1-4' as a flavor, I get this error:
ERROR: Fog::Compute::RackspaceV2::ServiceError: [HTTP 403 | req-12b43584-bd39-4a85-9115-4bd42b9ee8f1] Policy doesn't allow compute_flavor:create:image_backed to be performed.
This could also be an issue with Fog, but I'm not entirely sure. It would appear that support was added to Fog for the block_device_mapping attribute on Oct 1st: https://github.com/fog/fog/blob/master/lib/fog/rackspace/requests/compute_v2/create_server.rb
knife-rackspace added --rackconnect-wait which causes it to wait until the Rackconnect automation setup is complete before bootstrapping chef.
Original PR: #35
With v3, the process has completely changed. Cloud servers in v3 do not get a public IP by default and you need to make an separate Rackconnect API call for a public IP. So essentially Knife-rackspace needs to be tweaked to add those additional calls and then wait before bootstrapping. We will need to retain the v2 functionality as well for backwards compatibility. So something like --rackconnect-v3-wait which makes the call and waits till the IP is provisioned. 'accessIPv4' is still correctly populated as before and so that is the right public IP to use.
More about the Rackconnect API can be found here.
http://www.rackspace.com/knowledge_center/article/getting-started-with-the-rackconnect-v30-api#section3_add_public_IP_address_API
Let me know if you need more details.
Thanks
martinstev-ltm1:~ martin.stevens$ knife rackspace server list -VV
INFO: Using configuration from /Users/martin.stevens/.chef/knife.rb
DEBUG: version (config)
DEBUG: version v2 (cli)
DEBUG: rackspace_api_key ******************** (config)
DEBUG: rackspace_api_key ******************** (cli)
DEBUG: rackspace_username (config)
DEBUG: rackspace_username (cli)
DEBUG: rackspace_api_username ********** (config)
DEBUG: rackspace_api_username (cli)
DEBUG: rackspace_auth_url (config)
DEBUG: rackspace_auth_url (cli)
DEBUG: rackspace_auth_url https://identity.api.rackspacecloud.com/v2.0 (using)
DEBUG: rackspace_region LON (config)
DEBUG: rackspace_region LON (cli)
DEBUG: rackspace v2
DEBUG: https_proxy <not specified> (config)
DEBUG: http_proxy <not specified> (config)
DEBUG: using proxy <none> (config)
DEBUG: ssl_verify_peer false (config)
/Users/martin.stevens/.chefdk/gem/ruby/2.3.0/gems/knife-rackspace-1.0.0/lib/chef/knife/rackspace_server_list.rb:42:in `block in run': undefined method `label' for #<Fog::Compute::RackspaceV2::Image:0x007ffb78273690> (NoMethodError)
from /Users/martin.stevens/.chefdk/gem/ruby/2.3.0/gems/knife-rackspace-1.0.0/lib/chef/knife/rackspace_server_list.rb:42:in `collect'
from /Users/martin.stevens/.chefdk/gem/ruby/2.3.0/gems/knife-rackspace-1.0.0/lib/chef/knife/rackspace_server_list.rb:42:in `run'
from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/knife.rb:443:in `block in run_with_pretty_exceptions'
from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/local_mode.rb:44:in `with_server_connectivity'
from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/knife.rb:442:in `run_with_pretty_exceptions'
from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/knife.rb:219:in `run'
from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/application/knife.rb:156:in `run'
from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/bin/knife:25:in `<top (required)>'
from /usr/local/bin/knife:58:in `load'
from /usr/local/bin/knife:58:in `<main>'
With any knife rackspace commands we now see..
`Ignoring eventmachine-1.2.1 because its extensions are not built. Try: gem pristine eventmachine --version 1.2.1
Ignoring eventmachine-1.0.9.1 because its extensions are not built. Try: gem pristine eventmachine --version 1.0.9.1
Ignoring io-console-0.4.6 because its extensions are not built. Try: gem pristine io-console --version 0.4.6
Ignoring json-2.0.2 because its extensions are not built. Try: gem pristine json --version 2.0.2
Ignoring psych-2.2.2 because its extensions are not built. Try: gem pristine psych --version 2.2.2`
As a user, I want to be able to access nodes created with the rackspace gem by their public IP. However, nodes created with "knife rackspace server create" don't have any of the rackspace metadata attributes set in node[:rackspace], node[:cloud], or node[:cloud_v2].
knife-rackspace-1.0.4
OS, cookbook, etc. are irrelevant really for this enhancement request but nonetheless, my workstation is RHEL6
I would like to be able to add server tags that will show under the Tags column, on my RackSpace Cloud portal, when the server is created. Presumably, this could be done with a '-T' tag in the 'knife rackspace server create' command.
I forked knife-dsl
a while ago to fix IO capture. This project is using my fork, which I forked from danryan, who forked it from chef-workflow, because they didn't want to accept PRs at that time.
Their reason was:
Effectively once chef-workflow 0.3 is ready, I think I will be able to
retire or hand off this gem to someone who is more interested in
maintaining it
The change is pretty minor, but since the gem is effectively unmaintained it'd still be good to either:
martinstev-ltm1:~ martin.stevens$ knife rackspace server create --image 6dc97231-c87a-4d34-bd5c-cf0b57743b2d -VV
INFO: Using configuration from /Users/martin.stevens/.chef/knife.rb
DEBUG: version (config)
DEBUG: version v2 (cli)
DEBUG: rackspace_api_key ********* (config)
DEBUG: rackspace_api_key ********* (cli)
DEBUG: rackspace_username (config)
DEBUG: rackspace_username (cli)
DEBUG: rackspace_api_username ********* (config)
DEBUG: rackspace_api_username (cli)
DEBUG: rackspace_auth_url (config)
DEBUG: rackspace_auth_url (cli)
DEBUG: rackspace_auth_url https://identity.api.rackspacecloud.com/v2.0 (using)
DEBUG: rackspace_region LON (config)
DEBUG: rackspace_region LON (cli)
DEBUG: rackspace v2
DEBUG: https_proxy <not specified> (config)
DEBUG: http_proxy <not specified> (config)
DEBUG: using proxy <none> (config)
DEBUG: ssl_verify_peer false (config)
DEBUG: version (config)
DEBUG: version v2 (cli)
DEBUG: rackspace_api_key ********* (config)
DEBUG: rackspace_api_key ********* (cli)
DEBUG: rackspace_username (config)
DEBUG: rackspace_username (cli)
DEBUG: rackspace_api_username samtaylor (config)
DEBUG: rackspace_api_username (cli)
DEBUG: rackspace_auth_url (config)
DEBUG: rackspace_auth_url (cli)
DEBUG: rackspace_auth_url https://identity.api.rackspacecloud.com/v2.0 (using)
DEBUG: rackspace_region LON (config)
DEBUG: rackspace_region LON (cli)
DEBUG: rackspace v2
/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/fog-rackspace-0.1.2/lib/fog/rackspace.rb:108:in `escape': undefined method `gsub' for 2:Fixnum (NoMethodError)
from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/fog-rackspace-0.1.2/lib/fog/rackspace/requests/compute_v2/get_flavor.rb:26:in `get_flavor'
from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/fog-rackspace-0.1.2/lib/fog/rackspace/models/compute_v2/flavors.rb:31:in `get'
from /Users/martin.stevens/.chefdk/gem/ruby/2.3.0/gems/knife-rackspace-1.0.1/lib/chef/knife/rackspace_server_create.rb:392:in `run'
from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/knife.rb:443:in `block in run_with_pretty_exceptions'
from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/local_mode.rb:44:in `with_server_connectivity'
from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/knife.rb:442:in `run_with_pretty_exceptions'
from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/knife.rb:219:in `run'
from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/application/knife.rb:156:in `run'
from /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/bin/knife:25:in `<top (required)>'
from /usr/local/bin/knife:58:in `load'
from /usr/local/bin/knife:58:in `<main>'
Starting from a blank CentOS 7 (PVHVM 512MB Standard Instance)
ssh -l root serverip
yum groupinstall 'Development Tools'
yum install ruby ruby-devel libxml2 libxml2-devel
gem install chef
gem install knife-rackspace
adduser knifeuser
su - knifeuser
mkdir .chef
chmod 700 .chef
cat << EOF > ~/.chef/knife.rb
knife[:rackspace_api_username] = "apiuser"
knife[:rackspace_api_key] = "apikey"
knife[:rackspace_region] = "DFW"
EOF
knife rackspace server create -VV -I 8aac6fb5-4bd3-4256-bf6e-ff8500bf60cd
To which I get the output of:
INFO: Using configuration from /home/knifeuser/.chef/knife.rb
DEBUG: version (config)
DEBUG: version v2 (cli)
DEBUG: rackspace_api_key apikey
DEBUG: rackspace_username
DEBUG: rackspace_api_username apiuser
DEBUG: rackspace_auth_url
DEBUG: rackspace_auth_url
DEBUG: rackspace_auth_url https://identity.api.rackspacecloud.com/v2.0 (using)
DEBUG: rackspace_region DFW
DEBUG: rackspace_region DFW
DEBUG: rackspace v2
DEBUG: https_proxy (config)
DEBUG: http_proxy (config)
DEBUG: using proxy (config)
DEBUG: ssl_verify_peer (config)
Instance ID: a75bc74f-3930-4ac8-9d6f-ff48a503a5ec
Name: rs-00203265389326035
/usr/local/share/gems/gems/fog-1.27.0/lib/fog/rackspace/core.rb:145:in escape': undefined method
gsub' for 2:Fixnum (NoMethodError)
from /usr/local/share/gems/gems/fog-1.27.0/lib/fog/rackspace/requests/compute_v2/get_flavor.rb:26:in get_flavor' from /usr/local/share/gems/gems/fog-1.27.0/lib/fog/rackspace/models/compute_v2/flavors.rb:31:in
get'
from /usr/local/share/gems/gems/fog-1.27.0/lib/fog/rackspace/models/compute_v2/server.rb:327:in flavor' from /usr/local/share/gems/gems/knife-rackspace-0.10.0/lib/chef/knife/rackspace_server_create.rb:379:in
run'
from /usr/local/share/gems/gems/chef-12.0.3/lib/chef/knife.rb:417:in block in run_with_pretty_exceptions' from /usr/local/share/gems/gems/chef-12.0.3/lib/chef/local_mode.rb:38:in
with_server_connectivity'
from /usr/local/share/gems/gems/chef-12.0.3/lib/chef/knife.rb:416:in run_with_pretty_exceptions' from /usr/local/share/gems/gems/chef-12.0.3/lib/chef/knife.rb:213:in
run'
from /usr/local/share/gems/gems/chef-12.0.3/lib/chef/application/knife.rb:139:in run' from /usr/local/share/gems/gems/chef-12.0.3/bin/knife:25:in
<top (required)>'
โฝ
from /usr/local/bin/knife:23:in load' from /usr/local/bin/knife:23:in
Having trouble working out how to get knife rackspace
to automatically upload my databag secret file on server creation. here's my knife config:
current_dir = File.dirname(__FILE__)
user = ENV["CHEF_USER"]
OS_PASSWORD = ENV["OS_PASSWORD"] || 'nopass'
OS_USERNAME = ENV["OS_USERNAME"] || 'nopass'
OS_REGION_NAME = ENV["OS_REGION_NAME"] || 'dfw'
cookbook_path ["#{current_dir}/cookbooks"]
node_path "#{current_dir}/nodes"
role_path "#{current_dir}/roles"
environment_path "#{current_dir}/environments"
data_bag_path "#{current_dir}/data_bags"
client_key "~/.chef/#{user}.pem"
knife[:berkshelf_path] = "#{current_dir}/cookbooks"
log_level :info
log_location STDOUT
node_name user
validation_client_name "lolomg-validator"
validation_key "~/.chef/lolomg-validator.pem"
chef_server_url "https://api.opscode.com/organizations/lolomg"
cache_type "BasicFile"
cache_options( :path => "#{ENV["HOME"]}/.chef/checksums" )
encrypted_data_bag_secret '~/.chef/lolomgdbsecret'
knife[:rackspace_api_username] = OS_USERNAME
knife[:rackspace_api_key] = OS_PASSWORD
knife[:rackspace_region] = OS_REGION_NAME.to_sym
knife[:secret_file] = '~/.chef/lolomgdbsecret'
Any chance of making a new release with the working encrypted databag secret ?
So I install the 0.54 plugin via gem, but when I use knife to mamage rackspace servers it defaults to the rackspace support in fog:
$ knife rackspace server list
[WARN] Fog::Rackspace::Compute.new is deprecated, use Fog::Compute.new(:provider => 'Rackspace') instead (/var/lib/gems/1.8/gems/fog-0.7.2/lib/fog/core/service.rb:58:in new') /var/lib/gems/1.8/gems/excon-0.6.3/lib/excon/connection.rb:179:in
request': Expected(204) <=> Actual(401 Unauthorized) (Excon::Errors::Unauthorized)
request => {:expects=>204, :method=>"GET", :scheme=>"https", :host=>"auth.api.rackspacecloud.com", :port=>"443", :mock=>nil, :path=>"/v1.0", :headers=>{"X-Auth-User"=>"darrenbirkett", "Content-Length"=>0, "X-Auth-Key"=>"b1241da2e7adc4417058a22d5367c6a8", "Host"=>"auth.api.rackspacecloud.com:443"}, :query=>nil}
response => #<Excon::Response:0x7ff3d157d4c0 @status=401, @headers={"Content-Type"=>"application/octet-stream", "Date"=>"Thu, 05 May 2011 14:22:11 GMT", "Content-Length"=>"24", "Server"=>"Apache/2.2.3 (Mosso Engineering)", "Connection"=>"close"}, @Body="Bad username or password">
from /var/lib/gems/1.8/gems/fog-0.7.2/lib/fog/core/connection.rb:20:in request' from /var/lib/gems/1.8/gems/fog-0.7.2/lib/fog/providers/rackspace.rb:17:in
authenticate'
from /var/lib/gems/1.8/gems/fog-0.7.2/lib/fog/compute/rackspace.rb:139:in authenticate' from /var/lib/gems/1.8/gems/fog-0.7.2/lib/fog/compute/rackspace.rb:90:in
initialize'
from /var/lib/gems/1.8/gems/fog-0.7.2/lib/fog/core/service.rb:58:in new' from /var/lib/gems/1.8/gems/fog-0.7.2/lib/fog/core/service.rb:58:in
new'
from /usr/lib/ruby/1.8/chef/knife/rackspace_server_list.rb:38:in run' from /usr/lib/ruby/1.8/chef/knife.rb:131:in
run'
from /usr/lib/ruby/1.8/chef/application/knife.rb:120:in `run'
from /usr/bin/knife:25
problem is that the fog support for rackspace does not honour the auth_url config setting in knife.rb, so it's trying to connect to the us rackspace auth servers. I don't know why the knife-rackspace installed gem is being ignored/
martinstev-ltm1:~ martin.stevens$ knife rackspace server create --server-name MSTEST -f 3 -I f2db6fd7-1e40-41f1-9ac0-ad8d1dfd7651
ERROR: Fog::Compute::RackspaceV2::InternalServerError: [HTTP 500 | req-5747fc8f-4a32-4724-9d5b-2ae2ef5df32d] The server has either erred or is incapable of performing the requested operation.
When trying to bootstrap with --bootstrap-protocol winrm - any ideas ?
Bootstrap command with winrm
martinstev-ltm1:~ martin.stevens$ knife rackspace server create --node-name MSTEST --server-name MSTEST -f 8 --bootstrap-protocol winrm --image 6dc97231-c87a-4d34-bd5c-cf0b57743b2d -V
INFO: Using configuration from /Users/martin.stevens/.chef/knife.rb
ERROR: Gem::ConflictError: Unable to activate em-winrm-0.7.0, because winrm-2.1.0 conflicts with winrm (~> 1.3.0)
martinstev-ltm1:~ martin.stevens$ chef -v
Chef Development Kit Version: 1.0.3
chef-client version: 12.16.42
delivery version: master (83358fb62c0f711c70ad5a81030a6cae4017f103)
berks version: 5.2.0
kitchen version: 1.13.2
Cut down gem list
martinstev-ltm1:~ martin.stevens$ chef gem list | grep winrm
em-winrm (0.7.0)
winrm (2.1.0, 1.3.6)
winrm-elevated (1.0.1)
winrm-fs (1.0.0)
Just did a fresh install to test the recent PR submission, and I saw this:
DEBUG: version (config)
DEBUG: version v2 (cli)
DEBUG: rackspace_api_key censored
DEBUG: rackspace_username
DEBUG: rackspace_api_username martinb3
DEBUG: rackspace_auth_url
DEBUG: rackspace_auth_url
DEBUG: rackspace_auth_url https://identity.api.rackspacecloud.com/v2.0 (using)
DEBUG: rackspace_region IAD
DEBUG: rackspace_region
DEBUG: rackspace v2
DEBUG: https_proxy <not specified> (config)
DEBUG: http_proxy <not specified> (config)
DEBUG: using proxy <none> (config)
DEBUG: ssl_verify_peer <not specified> (config)
lib/chef/knife/rackspace_server_list.rb:42:in `block in run': undefined method `label' for #<Fog::Compute::RackspaceV2::Image:0x007fbfdcb0e278> (NoMethodError)
from lib/chef/knife/rackspace_server_list.rb:42:in `collect'
from lib/chef/knife/rackspace_server_list.rb:42:in `run'
from lib/ruby/gems/2.1.0/gems/chef-10.34.6/lib/chef/knife.rb:408:in `run_with_pretty_exceptions'
from /.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/chef-10.34.6/lib/chef/knife.rb:168:in `run'
from /.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/chef-10.34.6/lib/chef/application/knife.rb:125:in `run'
from /.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/chef-10.34.6/bin/knife:25:in `<top (required)>'
from /.rbenv/versions/2.1.5/bin/knife:23:in `load'
from /.rbenv/versions/2.1.5/bin/knife:23:in `<main>'
from /.rbenv/versions/2.1.5/bin/ruby_executable_hooks:15:in `eval'
from /.rbenv/versions/2.1.5/bin/ruby_executable_hooks:15:in `<main>'
kinfe rackspace throws an exception after a successful bootstrap when there is a single item in runlist (in my case, only one item role[web-rackspace], can soomething be done to catch if it a string or an array and then pass the output accordingly.
Public DNS Name: xxx.xxx.xxx.xxx.xip.io
Public IP Address: xxx.xxx.xxx.xxx
Private IP Address: xxx.xxx.xxx.xxx
Password: xxxxxxxxxxxx
Environment: rackspace-web-server
ERROR: knife encountered an unexpected error
This may be a bug in the 'rackspace server create' knife command or plugin
Please collect the output of this command with the -VV
option before filing a bug report.
Exception: NoMethodError: undefined method `join' for "role[web-rackspace]":String
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.