npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

containernet

v0.3.0

Published

Spin up and interact with virtual networks using Containernet and Node.js

Downloads

6

Readme

containernet

Spin up and interact with virtual networks using Containernet and Node.js

npm install containernet

This module is a fork of @mafintosh mininet altered to work with Containernet

Usage

var containernet = require('containernet')
var cn = containernet()

var s1 = cn.createSwitch()
var d1 = cn.createHost({image: 'ubuntu:trusty', cmd: '/bin/bash'})
var d2 = cn.createHost({image: 'ubuntu:trusty', cmd: '/bin/bash'})

d1.link(s1)
d2.link(s1)

cn.start(function () {
  console.log('containernet started')
  console.log(`d2 ${d2.ip} ${d2.mac}`)
  // Test connectivity
  d1.exec(`ping -c 2 ${d2.ip}`, function (err, stream) {
    if (err) {
      console.log(err)
    } else {
      stream.pipe(process.stdout)
    }
    // Stop containernet
    cn.stop()
  })
})

process.on('SIGINT', function () {
  cn.stop()
})

API

var cn = containernet([options])

Create a new containernet instance. Options include

{
  clean: false,         // if true run mn -c first
  sudo: true,           // use sudo if needed 
  sock: '/tmp/mn.sock', // explictly set the .sock file used
  debug: false,         // set to true to enable debug output
}

If for some reason your containernet instance stops working you probably wanna try using clean: true.

cn.start([callback])

Start the containernet network. Usually you call this after defining your hosts, switches and links.

After the network has fully started start is emitted.

cn.stop([callback])

Stop the containernet network. You should not call any other methods after this.

After the network has fully stopped stop is emitted.

cn.switches

Array of all created switches.

cn.hosts

Array of all created hosts.

var sw = cn.createSwitch()

Create a new switch

sw.link(other, [options])

Link the switch with another switch or host. Options include:

{
  bandwidth: 10,  // use 10mbit link
  delay: '100ms', // 100ms delay
  loss: 10,       // 10% package loss
  htb: true       // use htb
}

var host = cn.createHost([options])

Create a new host. Options include

{
  image: 'alpine',      // docker image to use for the host 
  cmd: '/bin/bash'     // cmd to run on the newly created container 
}

host.ip

The IP address of the host. Populated after the network is started.

host.mac

The MAC address of the host. Populated after the network is started.

host.link(other, [options])

Link the host with another host or switch. Takes the same options as sw.link.

host.exec(cmd, [callback])

Execute a docker exec command and return the stream in the callback.

License

MIT