Skip to content

Commit

Permalink
误以为是cli了
Browse files Browse the repository at this point in the history
  • Loading branch information
timfeirg committed Jun 22, 2016
1 parent 5f802e5 commit 6d81c88
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 42 deletions.
3 changes: 3 additions & 0 deletions .gitignore
@@ -1,2 +1,5 @@
core
core.yaml
core.yml
.ropeproject
*.pyc
49 changes: 42 additions & 7 deletions README.md
@@ -1,15 +1,50 @@
Core
====

## INSTALL
## setup dev environment

```shell
git config --global url."git@gitlab.ricebook.net:".insteadOf "https://gitlab.ricebook.net/"
go get gitlab.ricebook.net/platform/core.git
mv $GOPATH/src/gitlab.ricebook.net/platform/core.git $GOPATH/src/gitlab.ricebook.net/platform/core
cd $GOPATH/src/gitlab.ricebook.net/platform/core && go install
ln -s $GOPATH/src/gitlab.ricebook.net/platform/core $MY_WORK_SPACE/eru-core2
```

### GRPC

Generate golang & python code

```shell
cd rpc/gen
protoc --go_out=plugins=grpc:. core.proto
protoc -I . --python_out=. --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_python_plugin` core.proto
```

### deploy core on local environment

* create `core.yaml` like this

```
to generate golang code
bind: ":5000"
agent_port: "12345"
permdir: "/mnt/mfs/permdirs"
etcd:
- "http://127.0.0.1:2379"
$ cd rpc/gen
$ protoc --go_out=plugins=grpc:. core.proto
git:
public_key: "[path_to_pub_key]"
private_key: "[path_to_pri_key]"
to generate python code
docker:
log_driver: "json-file"
network_mode: "bridge"
cert_path: "[cert_file_dir]"
hub: "hub.ricebook.net"
```

* start eru core

$ cd rpc/gen
$ protoc -I . --python_out=. --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_python_plugin` core.proto
```
core --config core.yaml
```
5 changes: 4 additions & 1 deletion cluster/calcium/build_image.go
Expand Up @@ -270,7 +270,10 @@ func createDockerfile(buildDir, uid, reponame string, specs types.Specs) error {
if err != nil {
return err
}
parsedTemplate.Execute(f, specs)
err = parsedTemplate.Execute(f, specs)
if err != nil {
return err
}

if err := f.Sync(); err != nil {
return err
Expand Down
55 changes: 21 additions & 34 deletions devtools/client.py 100644 → 100755
@@ -1,36 +1,31 @@
# coding: utf-8

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import click
import core_pb2 as pb
from grpc.beta import implementations
from grpc.framework.interfaces.face.face import AbortionError

import core_pb2 as pb

def _get_stub(ctx):
try:
channel = implementations.insecure_channel('localhost', 5000)
except Exception:
click.echo(click.style('error getting channel', fg='red', bold=True))
ctx.exit(-1)

@click.group()
@click.option('--grpc-host', default='localhost', show_default=True)
@click.option('--grpc-port', default=5000, show_default=True, type=int)
@click.pass_context
def cli(ctx, grpc_host, grpc_port):
channel = implementations.insecure_channel(grpc_host, grpc_port)
if not channel:
click.echo(click.style('error getting stub', fg='red', bold=True))
ctx.exit(-1)
return pb.beta_create_CoreRPC_stub(channel)


@click.group()
@click.pass_context
def cli(ctx):
pass
stub = pb.beta_create_CoreRPC_stub(channel)
ctx.obj['stub'] = stub


@cli.command('pod:list')
@click.pass_context
def list_pods(ctx):
stub = _get_stub(ctx)
try:
r = stub.ListPods(pb.Empty(), 5)
r = ctx.obj['stub'].ListPods(pb.Empty(), 5)
except AbortionError as e:
click.echo(click.style('abortion error: %s' % e.details, fg='red', bold=True))
ctx.exit(-1)
Expand All @@ -44,11 +39,10 @@ def list_pods(ctx):
@click.argument('desc')
@click.pass_context
def create_pod(ctx, name, desc):
stub = _get_stub(ctx)
opts = pb.AddPodOptions(name=name, desc=desc)

try:
pod = stub.AddPod(opts, 5)
pod = ctx.obj['stub'].AddPod(opts, 5)
except AbortionError as e:
click.echo(click.style('abortion error: %s' % e.details, fg='red', bold=True))
ctx.exit(-1)
Expand All @@ -64,11 +58,10 @@ def create_pod(ctx, name, desc):
@click.argument('name')
@click.pass_context
def get_pod(ctx, name):
stub = _get_stub(ctx)
opts = pb.GetPodOptions(name=name)

try:
pod = stub.GetPod(opts, 5)
pod = ctx.obj['stub'].GetPod(opts, 5)
except AbortionError as e:
click.echo(click.style('abortion error: %s' % e.details, fg='red', bold=True))
ctx.exit(-1)
Expand All @@ -80,11 +73,10 @@ def get_pod(ctx, name):
@click.argument('name')
@click.pass_context
def get_pod_nodes(ctx, name):
stub = _get_stub(ctx)
opts = pb.ListNodesOptions(podname=name)

try:
r = stub.ListPodNodes(opts, 5)
r = ctx.obj['stub'].ListPodNodes(opts, 5)
except AbortionError as e:
click.echo(click.style('abortion error: %s' % e.details, fg='red', bold=True))
ctx.exit(-1)
Expand All @@ -98,11 +90,10 @@ def get_pod_nodes(ctx, name):
@click.argument('nodename')
@click.pass_context
def get_node(ctx, podname, nodename):
stub = _get_stub(ctx)
opts = pb.GetNodeOptions(podname=podname, nodename=nodename)

try:
node = stub.GetNode(opts, 5)
node = ctx.obj['stub'].GetNode(opts, 5)
except AbortionError as e:
click.echo(click.style('abortion error: %s' % e.details, fg='red', bold=True))
ctx.exit(-1)
Expand All @@ -117,14 +108,13 @@ def get_node(ctx, podname, nodename):
@click.option('--public', '-p', is_flag=True)
@click.pass_context
def add_node(ctx, nodename, endpoint, podname, public):
stub = _get_stub(ctx)
opts = pb.AddNodeOptions(nodename=nodename,
endpoint=endpoint,
podname=podname,
public=public)

try:
node = stub.AddNode(opts, 5)
node = ctx.obj['stub'].AddNode(opts, 5)
except AbortionError as e:
click.echo(click.style('abortion error: %s' % e.details, fg='red', bold=True))
ctx.exit(-1)
Expand All @@ -138,11 +128,10 @@ def add_node(ctx, nodename, endpoint, podname, public):
@click.argument('uid')
@click.pass_context
def build_image(ctx, repo, version, uid):
stub = _get_stub(ctx)
opts = pb.BuildImageOptions(repo=repo, version=version, uid=uid)

try:
for m in stub.BuildImage(opts, 3600):
for m in ctx.obj['stub'].BuildImage(opts, 3600):
if m.error:
click.echo(click.style(m.error, fg='red'), nl=False)
elif m.stream:
Expand All @@ -161,7 +150,6 @@ def build_image(ctx, repo, version, uid):
@cli.command('deploy')
@click.pass_context
def create_container(ctx):
stub = _get_stub(ctx)
specs = """appname: "test-ci"
entrypoints:
web:
Expand Down Expand Up @@ -191,7 +179,7 @@ def create_container(ctx):
env=['ENV_A=1', 'ENV_B=2'])

try:
for m in stub.CreateContainer(opts, 3600):
for m in ctx.obj['stub'].CreateContainer(opts, 3600):
click.echo(m)
except AbortionError as e:
click.echo(click.style('abortion error: %s' % e.details, fg='red', bold=True))
Expand All @@ -204,11 +192,10 @@ def create_container(ctx):
@click.argument('ids', nargs=-1)
@click.pass_context
def remove_container(ctx, ids):
stub = _get_stub(ctx)
ids = pb.ContainerIDs(ids=[pb.ContainerID(id=i) for i in ids])

try:
for m in stub.RemoveContainer(ids, 3600):
for m in ctx.obj['stub'].RemoveContainer(ids, 3600):
click.echo('%s: success %s, message: %s' % (m.id, m.success, m.message))
except AbortionError as e:
click.echo(click.style('abortion error: %s' % e.details, fg='red', bold=True))
Expand All @@ -218,4 +205,4 @@ def remove_container(ctx, ids):


if __name__ == '__main__':
cli()
cli(obj={})
4 changes: 4 additions & 0 deletions devtools/requirements.txt
@@ -0,0 +1,4 @@
click == 6.6
six == 1.10.0
protobuf == 3.0.0b3
grpcio

0 comments on commit 6d81c88

Please sign in to comment.