Code Monkey home page Code Monkey logo

curvature's People

Contributors

bradleyjones avatar ddutta avatar jackpeterfletch avatar johndavidge avatar tehsmash avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

curvature's Issues

No javascript being run?

Hi,

I just cloned the project but there no javascript is being ran. The interface is just plain html.. Whats up? ... check the attached picture...

screen shot 2014-04-11 at 9 29 12 am

Thanks,
Bryan

Config example is incomplete

It's not clear what if anything is expected for the "Services" section of curvature.yaml in the config directory.

Add token validation to curvature.

I know we've seen something like this before:

<title>Action Controller: Exception caught</title> <style> body { background-color: #fff; color: #333; }
body, p, ol, ul, td {
  font-family: helvetica, verdana, arial, sans-serif;
  font-size:   13px;
  line-height: 18px;
}

pre {
  background-color: #eee;
  padding: 10px;
  font-size: 11px;
  white-space: pre-wrap;
}

a { color: #000; }
a:visited { color: #666; }
a:hover { color: #fff; background-color:#000; }
</style>

ActiveRecord::RecordNotFound in DeployedContainersController#index

Couldn't find Storage without an ID

Rails.root: /opt/donabe

Application Trace | Framework Trace | Full Trace
<div id="Application-Trace" style="display: block;">
  <pre><code>app/controllers/deployed_containers_controller.rb:33:in `rescue in index&#x27;

app/controllers/deployed_containers_controller.rb:23:in index&#x27;</code></pre> </div> <div id="Framework-Trace" style="display: none;"> <pre><code>activerecord (3.2.8) lib/active_record/relation/finder_methods.rb:310:in find_with_ids'
activerecord (3.2.8) lib/active_record/relation/finder_methods.rb:107:in find&#x27; activerecord (3.2.8) lib/active_record/querying.rb:5:in find'
actionpack (3.2.8) lib/action_controller/metal/implicit_render.rb:4:in send_action&#x27; actionpack (3.2.8) lib/abstract_controller/base.rb:167:in process_action'
actionpack (3.2.8) lib/action_controller/metal/rendering.rb:10:in process_action&#x27; actionpack (3.2.8) lib/abstract_controller/callbacks.rb:18:in block in process_action'
activesupport (3.2.8) lib/active_support/callbacks.rb:403:in _run__671858439435266604__process_action__1395755320764098276__callbacks&#x27; activesupport (3.2.8) lib/active_support/callbacks.rb:405:in __run_callback'
activesupport (3.2.8) lib/active_support/callbacks.rb:385:in _run_process_action_callbacks&#x27; activesupport (3.2.8) lib/active_support/callbacks.rb:81:in run_callbacks'
actionpack (3.2.8) lib/abstract_controller/callbacks.rb:17:in process_action&#x27; actionpack (3.2.8) lib/action_controller/metal/rescue.rb:29:in process_action'
actionpack (3.2.8) lib/action_controller/metal/instrumentation.rb:30:in block in process_action&#x27; activesupport (3.2.8) lib/active_support/notifications.rb:123:in block in instrument'
activesupport (3.2.8) lib/active_support/notifications/instrumenter.rb:20:in instrument&#x27; activesupport (3.2.8) lib/active_support/notifications.rb:123:in instrument'
actionpack (3.2.8) lib/action_controller/metal/instrumentation.rb:29:in process_action&#x27; actionpack (3.2.8) lib/action_controller/metal/params_wrapper.rb:207:in process_action'
activerecord (3.2.8) lib/active_record/railties/controller_runtime.rb:18:in process_action&#x27; actionpack (3.2.8) lib/abstract_controller/base.rb:121:in process'
actionpack (3.2.8) lib/abstract_controller/rendering.rb:45:in process&#x27; actionpack (3.2.8) lib/action_controller/metal.rb:203:in dispatch'
actionpack (3.2.8) lib/action_controller/metal/rack_delegation.rb:14:in dispatch&#x27; actionpack (3.2.8) lib/action_controller/metal.rb:246:in block in action'
actionpack (3.2.8) lib/action_dispatch/routing/route_set.rb:73:in call&#x27; actionpack (3.2.8) lib/action_dispatch/routing/route_set.rb:73:in dispatch'
actionpack (3.2.8) lib/action_dispatch/routing/route_set.rb:36:in call&#x27; journey (1.0.4) lib/journey/router.rb:68:in block in call'
journey (1.0.4) lib/journey/router.rb:56:in each&#x27; journey (1.0.4) lib/journey/router.rb:56:in call'
actionpack (3.2.8) lib/action_dispatch/routing/route_set.rb:600:in call&#x27; actionpack (3.2.8) lib/action_dispatch/middleware/best_standards_support.rb:17:in call'
rack (1.4.5) lib/rack/etag.rb:23:in call&#x27; rack (1.4.5) lib/rack/conditionalget.rb:25:in call'
actionpack (3.2.8) lib/action_dispatch/middleware/head.rb:14:in call&#x27; actionpack (3.2.8) lib/action_dispatch/middleware/params_parser.rb:21:in call'
actionpack (3.2.8) lib/action_dispatch/middleware/flash.rb:242:in call&#x27; rack (1.4.5) lib/rack/session/abstract/id.rb:210:in context'
rack (1.4.5) lib/rack/session/abstract/id.rb:205:in call&#x27; actionpack (3.2.8) lib/action_dispatch/middleware/cookies.rb:339:in call'
activerecord (3.2.8) lib/active_record/query_cache.rb:64:in call&#x27; activerecord (3.2.8) lib/active_record/connection_adapters/abstract/connection_pool.rb:473:in call'
actionpack (3.2.8) lib/action_dispatch/middleware/callbacks.rb:28:in block in call&#x27; activesupport (3.2.8) lib/active_support/callbacks.rb:405:in _run__2939623873060620647__call__1731706718715207871__callbacks'
activesupport (3.2.8) lib/active_support/callbacks.rb:405:in __run_callback&#x27; activesupport (3.2.8) lib/active_support/callbacks.rb:385:in _run_call_callbacks'
activesupport (3.2.8) lib/active_support/callbacks.rb:81:in run_callbacks&#x27; actionpack (3.2.8) lib/action_dispatch/middleware/callbacks.rb:27:in call'
actionpack (3.2.8) lib/action_dispatch/middleware/reloader.rb:65:in call&#x27; actionpack (3.2.8) lib/action_dispatch/middleware/remote_ip.rb:31:in call'
better_errors (1.0.1) lib/better_errors/middleware.rb:58:in call&#x27; actionpack (3.2.8) lib/action_dispatch/middleware/debug_exceptions.rb:16:in call'
actionpack (3.2.8) lib/action_dispatch/middleware/show_exceptions.rb:56:in call&#x27; railties (3.2.8) lib/rails/rack/logger.rb:26:in call_app'
railties (3.2.8) lib/rails/rack/logger.rb:16:in call&#x27; actionpack (3.2.8) lib/action_dispatch/middleware/request_id.rb:22:in call'
rack (1.4.5) lib/rack/methodoverride.rb:21:in call&#x27; rack (1.4.5) lib/rack/runtime.rb:17:in call'
activesupport (3.2.8) lib/active_support/cache/strategy/local_cache.rb:72:in call&#x27; rack (1.4.5) lib/rack/lock.rb:15:in call'
actionpack (3.2.8) lib/action_dispatch/middleware/static.rb:62:in call&#x27; railties (3.2.8) lib/rails/engine.rb:479:in call'
railties (3.2.8) lib/rails/application.rb:223:in call&#x27; rack (1.4.5) lib/rack/content_length.rb:14:in call'
railties (3.2.8) lib/rails/rack/log_tailer.rb:17:in call&#x27; rack (1.4.5) lib/rack/handler/webrick.rb:59:in service'
/usr/lib/ruby/1.9.1/webrick/httpserver.rb:138:in service&#x27; /usr/lib/ruby/1.9.1/webrick/httpserver.rb:94:in run'
/usr/lib/ruby/1.9.1/webrick/server.rb:191:in block in start_thread&#x27;</code></pre> </div> <div id="Full-Trace" style="display: none;"> <pre><code>activerecord (3.2.8) lib/active_record/relation/finder_methods.rb:310:in find_with_ids'
activerecord (3.2.8) lib/active_record/relation/finder_methods.rb:107:in find&#x27; activerecord (3.2.8) lib/active_record/querying.rb:5:in find'
app/controllers/deployed_containers_controller.rb:33:in rescue in index&#x27; app/controllers/deployed_containers_controller.rb:23:in index'
actionpack (3.2.8) lib/action_controller/metal/implicit_render.rb:4:in send_action&#x27; actionpack (3.2.8) lib/abstract_controller/base.rb:167:in process_action'
actionpack (3.2.8) lib/action_controller/metal/rendering.rb:10:in process_action&#x27; actionpack (3.2.8) lib/abstract_controller/callbacks.rb:18:in block in process_action'
activesupport (3.2.8) lib/active_support/callbacks.rb:403:in _run__671858439435266604__process_action__1395755320764098276__callbacks&#x27; activesupport (3.2.8) lib/active_support/callbacks.rb:405:in __run_callback'
activesupport (3.2.8) lib/active_support/callbacks.rb:385:in _run_process_action_callbacks&#x27; activesupport (3.2.8) lib/active_support/callbacks.rb:81:in run_callbacks'
actionpack (3.2.8) lib/abstract_controller/callbacks.rb:17:in process_action&#x27; actionpack (3.2.8) lib/action_controller/metal/rescue.rb:29:in process_action'
actionpack (3.2.8) lib/action_controller/metal/instrumentation.rb:30:in block in process_action&#x27; activesupport (3.2.8) lib/active_support/notifications.rb:123:in block in instrument'
activesupport (3.2.8) lib/active_support/notifications/instrumenter.rb:20:in instrument&#x27; activesupport (3.2.8) lib/active_support/notifications.rb:123:in instrument'
actionpack (3.2.8) lib/action_controller/metal/instrumentation.rb:29:in process_action&#x27; actionpack (3.2.8) lib/action_controller/metal/params_wrapper.rb:207:in process_action'
activerecord (3.2.8) lib/active_record/railties/controller_runtime.rb:18:in process_action&#x27; actionpack (3.2.8) lib/abstract_controller/base.rb:121:in process'
actionpack (3.2.8) lib/abstract_controller/rendering.rb:45:in process&#x27; actionpack (3.2.8) lib/action_controller/metal.rb:203:in dispatch'
actionpack (3.2.8) lib/action_controller/metal/rack_delegation.rb:14:in dispatch&#x27; actionpack (3.2.8) lib/action_controller/metal.rb:246:in block in action'
actionpack (3.2.8) lib/action_dispatch/routing/route_set.rb:73:in call&#x27; actionpack (3.2.8) lib/action_dispatch/routing/route_set.rb:73:in dispatch'
actionpack (3.2.8) lib/action_dispatch/routing/route_set.rb:36:in call&#x27; journey (1.0.4) lib/journey/router.rb:68:in block in call'
journey (1.0.4) lib/journey/router.rb:56:in each&#x27; journey (1.0.4) lib/journey/router.rb:56:in call'
actionpack (3.2.8) lib/action_dispatch/routing/route_set.rb:600:in call&#x27; actionpack (3.2.8) lib/action_dispatch/middleware/best_standards_support.rb:17:in call'
rack (1.4.5) lib/rack/etag.rb:23:in call&#x27; rack (1.4.5) lib/rack/conditionalget.rb:25:in call'
actionpack (3.2.8) lib/action_dispatch/middleware/head.rb:14:in call&#x27; actionpack (3.2.8) lib/action_dispatch/middleware/params_parser.rb:21:in call'
actionpack (3.2.8) lib/action_dispatch/middleware/flash.rb:242:in call&#x27; rack (1.4.5) lib/rack/session/abstract/id.rb:210:in context'
rack (1.4.5) lib/rack/session/abstract/id.rb:205:in call&#x27; actionpack (3.2.8) lib/action_dispatch/middleware/cookies.rb:339:in call'
activerecord (3.2.8) lib/active_record/query_cache.rb:64:in call&#x27; activerecord (3.2.8) lib/active_record/connection_adapters/abstract/connection_pool.rb:473:in call'
actionpack (3.2.8) lib/action_dispatch/middleware/callbacks.rb:28:in block in call&#x27; activesupport (3.2.8) lib/active_support/callbacks.rb:405:in _run__2939623873060620647__call__1731706718715207871__callbacks'
activesupport (3.2.8) lib/active_support/callbacks.rb:405:in __run_callback&#x27; activesupport (3.2.8) lib/active_support/callbacks.rb:385:in _run_call_callbacks'
activesupport (3.2.8) lib/active_support/callbacks.rb:81:in run_callbacks&#x27; actionpack (3.2.8) lib/action_dispatch/middleware/callbacks.rb:27:in call'
actionpack (3.2.8) lib/action_dispatch/middleware/reloader.rb:65:in call&#x27; actionpack (3.2.8) lib/action_dispatch/middleware/remote_ip.rb:31:in call'
better_errors (1.0.1) lib/better_errors/middleware.rb:58:in call&#x27; actionpack (3.2.8) lib/action_dispatch/middleware/debug_exceptions.rb:16:in call'
actionpack (3.2.8) lib/action_dispatch/middleware/show_exceptions.rb:56:in call&#x27; railties (3.2.8) lib/rails/rack/logger.rb:26:in call_app'
railties (3.2.8) lib/rails/rack/logger.rb:16:in call&#x27; actionpack (3.2.8) lib/action_dispatch/middleware/request_id.rb:22:in call'
rack (1.4.5) lib/rack/methodoverride.rb:21:in call&#x27; rack (1.4.5) lib/rack/runtime.rb:17:in call'
activesupport (3.2.8) lib/active_support/cache/strategy/local_cache.rb:72:in call&#x27; rack (1.4.5) lib/rack/lock.rb:15:in call'
actionpack (3.2.8) lib/action_dispatch/middleware/static.rb:62:in call&#x27; railties (3.2.8) lib/rails/engine.rb:479:in call'
railties (3.2.8) lib/rails/application.rb:223:in call&#x27; rack (1.4.5) lib/rack/content_length.rb:14:in call'
railties (3.2.8) lib/rails/rack/log_tailer.rb:17:in call&#x27; rack (1.4.5) lib/rack/handler/webrick.rb:59:in service'
/usr/lib/ruby/1.9.1/webrick/httpserver.rb:138:in service&#x27; /usr/lib/ruby/1.9.1/webrick/httpserver.rb:94:in run'
/usr/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'

Request

Parameters:

{"tenant_id"=>"3241cdb288924765be00e36c8a0840ee",
 "format"=>"json",
 "deployed_container"=>{}}

Show session dump

Show env dump

GATEWAY_INTERFACE: "CGI/1.1"
HTTP_ACCEPT: "*/*"
REMOTE_ADDR: "172.29.75.198"
REMOTE_HOST: "alpha-control01.ctocllab.cisco.com"
SERVER_NAME: "alpha-os.cisco.com"
SERVER_PROTOCOL: "HTTP/1.1"

Response

Headers:

None

Node labels no not appear for new nodes

Nodes created after the 'Show Node Labels' option is enabled do not have visible labels until the option is toggled off and on again.

To recreate:

  1. Make sure the graph has some nodes on it.
  2. Go to View --> Show Node Labels. All nodes on the graph should now be labelled.
  3. And and deploy any new node to the graph. This node will have no label.
  4. Disable and re-enable node labels. The new node will now be labelled along with all others.

LBaas

Hi, from watching the youtube demo of curvature, there was mention that other network devices such as Load balancers would be available if enabled within neutron.

I've tested on havana (with f5 default and HA proxy) and icehouse (with f5 default and HA proxy)

Only networks and routers were available from within curvature, do I need to enabled LBaas support or is this feature not available in the current master ?

Regards, Daniel

Installing curvature

I have set fresh Ubuntu Server 12.04.3 LTS and tried to install curvature. I will try to write everything I did and I kindly ask for your help.

First command that I used is:

curl -L https://get.rvm.io | bash -s stable --ruby=1.9.3 --gems=rails

I received these WARNING:

* WARNING: You have '~/.profile' file, you might want to load it,
    to do that add the following line to '/home/lrkadmin/.bash_profile':

      source ~/.profile

and several times these error (for different files)

unable to convert "\xE2" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to US-ASCII for lib/action_controller/metal/strong_parameters.rb, skipping

At the end of these command I received:

file 'lib' not found
unable to convert U+2014 from UTF-8 to US-ASCII for guides/rails_guides/markdown.rb, skipping

  * To start using RVM you need to run `source /home/lrkadmin/.rvm/scripts/rvm`
    in all your open shell windows, in rare cases you need to reopen all shell windows.

  * To start using rails you need to run `rails new `.

For first WARNING I entered command source ~/.profile and added source ~/.profile at the end of file /home/lrkadmin/.bash_profile.
And command source /home/lrkadmin/.rvm/scripts/rvm.


Next command sudo apt-get install libsqlite3-dev went without problems


I installed git and did git clone https://github.com/CiscoSystems/curvature.git, cd curvature and bundle install. This was successful.


rake db:create returned db/test.sqlite3 already exists
rake db:migrate returned

==  CreateStorages: migrating =================================================
-- create_table(:storages)
   -> 0.0012s
==  CreateStorages: migrated (0.0019s) ========================================

I did nano config/curvature.yml and changed openstack keystone ip


I started server with rails server


When I visited http://myip:3000 and sign in I get javascript alert with these content:

ActiveRecord::RecordNotFound in Openstack::FlavorsController#index

Couldn't find Storage with id=9

Rails.root: /home/lrkadmin/curvature

Application Trace | Framework Trace | Request

Parameters:

{"flavor"=>{}}

Show session dump

_csrf_token: "QEAQuMiua0NOe2dXy6wfthfVfA8OA18EAvmkowEzdgQ="
ceilometer_ip: 12
cinder_ip: 14
current_tenant: 3
current_tenant_name: 4
current_token: 5
current_user_id: 1
ec2_ip: 15
glance_ip: 11
heat-cfn_ip: 13
heat_ip: 16
keystone_ip: 17
neutron_ip: 7
nova_ip: 9
s3_ip: 10
services: 18
session_id: "17a77a9479fd4c7376dd37fdc7484e8d"

Show env dump

GATEWAY_INTERFACE: "CGI/1.1"
HTTP_ACCEPT: "*/*"
HTTP_ACCEPT_ENCODING: "gzip,deflate,sdch"
HTTP_ACCEPT_LANGUAGE: "en-GB,en;q=0.8,en-US;q=0.6,sl;q=0.4"
REMOTE_ADDR: "10.1.0.156"
REMOTE_HOST: "winsvr2k8r2ee64kms.uni-lj.si"
SERVER_NAME: "10.1.0.169"
SERVER_PROTOCOL: "HTTP/1.1"

Response

Headers:

None

And my server log (few last lines):

Errno::ECONNREFUSED (Connection refused - connect(2)):
  app/controllers/application_controller.rb:91:in `get_request'
  app/controllers/donabe/deployed_containers_controller.rb:4:in `index'


  Rendered /home/lrkadmin/.rvm/gems/ruby-1.9.3-p448/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.2ms)
  Rendered /home/lrkadmin/.rvm/gems/ruby-1.9.3-p448/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.9ms)
  Rendered /home/lrkadmin/.rvm/gems/ruby-1.9.3-p448/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (7.4ms)


Started GET "/openstack/networks" for 10.1.0.156 at 2013-11-07 14:08:07 +0100
Processing by Openstack::NetworksController#index as */*
  Parameters: {"network"=>{}}
Completed 500 Internal Server Error in 1ms

ActiveRecord::RecordNotFound (Couldn't find Storage without an ID):
  app/controllers/application_controller.rb:156:in `quantum'
  app/controllers/openstack/networks_controller.rb:4:in `index'


  Rendered /home/lrkadmin/.rvm/gems/ruby-1.9.3-p448/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.3ms)
  Rendered /home/lrkadmin/.rvm/gems/ruby-1.9.3-p448/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.0ms)
  Rendered /home/lrkadmin/.rvm/gems/ruby-1.9.3-p448/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (8.4ms)


Started GET "/openstack/floating_ips" for 10.1.0.156 at 2013-11-07 14:08:08 +0100
Processing by Openstack::FloatingIpsController#index as */*
  Parameters: {"floating_ip"=>{}}
Completed 500 Internal Server Error in 1ms

ActiveRecord::RecordNotFound (Couldn't find Storage without an ID):
  app/controllers/application_controller.rb:156:in `quantum'
  app/controllers/openstack/floating_ips_controller.rb:3:in `index'


  Rendered /home/lrkadmin/.rvm/gems/ruby-1.9.3-p448/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.1ms)
  Rendered /home/lrkadmin/.rvm/gems/ruby-1.9.3-p448/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.9ms)
  Rendered /home/lrkadmin/.rvm/gems/ruby-1.9.3-p448/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (7.2ms)

Invalid token when log in

I have set keystone ip and port in curvature.yml. My user is recognised since I don't get Login Unsuccessful! message. I got javascript alert window with these message

Couldn't find Storage without an ID

Rails.root: /home/lrkadmin/curvature

Application Trace | Framework Trace | Request

Parameters:

{"flavor"=>{}}

Show session dump

_csrf_token: "QEAQuMiua0NOe2dXy6wfthfVfA8OA18EAvmkowEzdgQ="
current_token: 34
current_user_id: 33
session_id: "17a77a9479fd4c7376dd37fdc7484e8d"

Show env dump

GATEWAY_INTERFACE: "CGI/1.1"
HTTP_ACCEPT: "_/_"
HTTP_ACCEPT_ENCODING: "gzip,deflate,sdch"
HTTP_ACCEPT_LANGUAGE: "en-GB,en;q=0.8,en-US;q=0.6,sl;q=0.4"
HTTP_CACHE_CONTROL: "max-age=0"
REMOTE_ADDR: "10.1.0.156"
REMOTE_HOST: "winsvr2k8r2ee64kms.uni-lj.si"
SERVER_NAME: "10.1.0.169"
SERVER_PROTOCOL: "HTTP/1.1"

When I close this alert I get
screen shot 2013-11-06 at 12 55 28 pm

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.