removed ssh for now

This commit is contained in:
Todd Gruben 2014-04-10 16:55:50 -05:00
parent 8f0c1c14b5
commit 2e20261b00
3 changed files with 1 additions and 245 deletions

View file

@ -80,10 +80,9 @@ func (self *LevelDBStorage) Fetch(bitmap_id uint64, db string, frame string, sli
start_key := encodeKey(bitmap_id, 0, 0)
limit_key := encodeKey(bitmap_id+1, 0, 0)
iter := self.db.NewIterator(&Range{Start: start_key, Limit: limit_key}, nil)
log.Println("START")
last_key = COUNTERMASK
for iter.Next() {
id, chunk_key, block_index := decodeKey(iter.Key())
_, chunk_key, block_index := decodeKey(iter.Key())
block, filter = decodeValue(iter.Value())
if chunk_key != COUNTERMASK {
if chunk_key != last_key {
@ -93,7 +92,6 @@ func (self *LevelDBStorage) Fetch(bitmap_id uint64, db string, frame string, sli
chunk.Value.Block[block_index] = block
} else {
log.Println("Setting COUNT:", block)
count = block
}
last_key = chunk_key
@ -119,7 +117,6 @@ func (self *LevelDBStorage) runBatch(batch *leveldb.Batch) {
}
}
func (self *LevelDBStorage) FlushBatch() {
log.Println("FLUSHING")
start := time.Now()
self.runBatch(self.batch) //maybe this is crazy but i'll give it a whirl
self.batch = nil
@ -171,7 +168,6 @@ func (self *LevelDBStorage) StoreBlock(id int64, db string, frame string, slice
if self.batch == nil {
panic("NIL BATCH")
}
log.Println("BLOCK WRITE")
start := time.Now()
self.batch.Put(encodeKey(uint64(id), uint64(chunk), uint8(block_index)), encodeValue(uint64(block), filter))
delta := time.Since(start)

View file

@ -1,46 +0,0 @@
package remote
import (
"bytes"
"fmt"
"os"
"strings"
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func TestRemote(t *testing.T) {
Convey("Login", t, func() {
pem_file := "id_dsa"
if _, err := os.Stat(pem_file); err == nil {
ssh, err := New("50.16.204.123:22", "todd", pem_file)
So(err, ShouldEqual, nil)
err = ssh.Launch("sleep 10 && date", "background")
So(err, ShouldEqual, nil)
content, _ := ssh.Run("date", false)
ssh.CopyTo(strings.NewReader(content), "uploadfile")
var out bytes.Buffer
ssh.CopyFrom("uploadfile", &out)
ok := bytes.Equal([]byte(content), out.Bytes())
So(ok, ShouldEqual, true)
} else {
fmt.Println("No credentials to SSH. Test ignored.")
So(true, ShouldEqual, true)
}
})
Convey("BigFile", t, func() {
pem_file := "id_dsa"
if _, err := os.Stat(pem_file); err == nil {
ssh, _ := New("50.16.204.123:22", "todd", pem_file)
ssh.SimpleFileCopyTo("outbin", "tb")
ssh.SimpleFileCopyFrom("tb", "outbin2")
} else {
fmt.Println("No credentials to SSH. Test ignored.")
So(true, ShouldEqual, true)
}
})
}

View file

@ -1,194 +0,0 @@
package remote
import (
"bufio"
"bytes"
"fmt"
"io"
"io/ioutil"
"os"
"code.google.com/p/go.crypto/ssh"
)
type keychain struct {
keys []ssh.Signer
}
func (k *keychain) Key(i int) (ssh.PublicKey, error) {
if i < 0 || i >= len(k.keys) {
return nil, nil
}
return k.keys[i].PublicKey(), nil
}
func (k *keychain) Sign(i int, rand io.Reader, data []byte) (sig []byte, err error) {
return k.keys[i].Sign(rand, data)
}
func (k *keychain) add(key ssh.Signer) {
k.keys = append(k.keys, key)
}
func (k *keychain) loadPEM(file string) error {
buf, err := ioutil.ReadFile(file)
if err != nil {
return err
}
key, err := ssh.ParsePrivateKey(buf)
if err != nil {
return err
}
k.add(key)
return nil
}
func (k *keychain) loadPEMString(buf string) error {
key, err := ssh.ParsePrivateKey([]byte(buf))
if err != nil {
return err
}
k.add(key)
return nil
}
type SSH struct {
client *ssh.ClientConn
}
func (self *SSH) Launch(command string, server_log_path string) error {
command = fmt.Sprintf("/usr/bin/nohup bash -c \\\n\"%s\" `</dev/null` >%s 2>&1 &", command, server_log_path)
var b bytes.Buffer
var e bytes.Buffer
session, _ := self.client.NewSession()
defer session.Close()
session.Stdout = &b
session.Stderr = &e
return session.Run(command)
}
func (self *SSH) Run(command string, sudo bool) (string, error) {
var b bytes.Buffer
var e bytes.Buffer
session, _ := self.client.NewSession()
defer session.Close()
session.Stdout = &b
session.Stderr = &e
if sudo {
command = fmt.Sprintf("/usr/bin/sudo bash <<CMD\nexport PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin\n%s\nCMD", command)
} else {
command = fmt.Sprintf("bash <<CMD\nexport PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin\n%s\nCMD", command)
}
if err := session.Run(command); err != nil {
//error
return e.String(), err
}
return b.String(), nil
}
func (self *SSH) CopyTo(content io.Reader, dest_name string) error {
session, err := self.client.NewSession()
defer session.Close()
go func() {
w, _ := session.StdinPipe()
defer w.Close()
// w.Write(content)
buf := make([]byte, 4096)
for {
// read a chunk
n, err := content.Read(buf)
if err != nil && err != io.EOF {
panic(err)
}
if n == 0 {
break
}
// write a chunk
if _, err := w.Write(buf[:n]); err != nil {
panic(err)
}
}
}()
err = session.Run(fmt.Sprintf("/bin/cat >%s", dest_name))
return err
}
func (self *SSH) CopyFrom(dest_name string, out io.Writer) error {
session, _ := self.client.NewSession()
defer session.Close()
session.Stdout = out
session.Run(fmt.Sprintf("/bin/cat %s", dest_name))
return nil
}
func (self *SSH) SimpleFileCopyFrom(server_name, local_name string) error {
fo, err := os.Create(local_name)
if err != nil {
return err
}
// close fo on exit and check for its returned error
defer fo.Close()
/*
defer func() {
if err := fo.Close(); err != nil {
return err
}
}()
*/
// make a write buffer
w := bufio.NewWriter(fo)
self.CopyFrom(server_name, w)
if err = w.Flush(); err != nil {
return err
}
return nil
}
func (self *SSH) SimpleFileCopyTo(local_name, server_name string) error {
fi, err := os.Open(local_name)
if err != nil {
return err
}
// close fi on exit and check for its returned error
defer fi.Close()
/*
defer func() {
if err := fi.Close(); err != nil {
return err
}
}()
*/
// make a read buffer
r := bufio.NewReader(fi)
return self.CopyTo(r, server_name)
}
func New(host, user, pem_path string) (*SSH, error) {
ret := new(SSH)
k := new(keychain)
k.loadPEM(pem_path)
config := &ssh.ClientConfig{
User: user,
Auth: []ssh.ClientAuth{
ssh.ClientAuthKeyring(k),
},
}
client, err := ssh.Dial("tcp", host, config)
if err != nil {
return nil, err
}
ret.client = client
return ret, err
}