fnctl: Fix aws import (#212)

This commit is contained in:
Seif Lotfy سيف لطفي
2016-11-03 01:20:51 +01:00
committed by C Cirello
parent e9c0fb454a
commit 0bff16e765

View File

@@ -28,10 +28,6 @@ type lambdaCmd struct {
settings config.Settings
token *string
projectID *string
}
type lambdaCreateCmd struct {
lambdaCmd
functionName string
runtime string
@@ -47,16 +43,16 @@ type lambdaCreateCmd struct {
awsRegion string
}
func (lcc *lambdaCreateCmd) Config() error {
func (lcc *lambdaCmd) Config() error {
return nil
}
type DockerJsonWriter struct {
type dockerJsonWriter struct {
under io.Writer
w io.Writer
}
func NewDockerJsonWriter(under io.Writer) *DockerJsonWriter {
func newDockerJsonWriter(under io.Writer) *dockerJsonWriter {
r, w := io.Pipe()
go func() {
err := jsonmessage.DisplayJSONMessagesStream(r, under, 1, true, nil)
@@ -65,14 +61,14 @@ func NewDockerJsonWriter(under io.Writer) *DockerJsonWriter {
os.Exit(1)
}
}()
return &DockerJsonWriter{under, w}
return &dockerJsonWriter{under, w}
}
func (djw *DockerJsonWriter) Write(p []byte) (int, error) {
func (djw *dockerJsonWriter) Write(p []byte) (int, error) {
return djw.w.Write(p)
}
func (lcc *lambdaCreateCmd) getFlags() []cli.Flag {
func (lcc *lambdaCmd) getFlags() []cli.Flag {
return []cli.Flag{
cli.StringFlag{
Name: "function-name",
@@ -111,6 +107,7 @@ func (lcc *lambdaCreateCmd) getFlags() []cli.Flag {
Name: "version",
Usage: "Version of the function to import.",
Destination: &lcc.version,
Value: "$LATEST",
},
cli.BoolFlag{
@@ -134,7 +131,7 @@ func (lcc *lambdaCreateCmd) getFlags() []cli.Flag {
}
}
func (lcc *lambdaCreateCmd) downloadToFile(url string) (string, error) {
func (lcc *lambdaCmd) downloadToFile(url string) (string, error) {
downloadResp, err := http.Get(url)
if err != nil {
return "", err
@@ -152,7 +149,7 @@ func (lcc *lambdaCreateCmd) downloadToFile(url string) (string, error) {
return tmpFile.Name(), nil
}
func (lcc *lambdaCreateCmd) unzipAndGetTopLevelFiles(dst, src string) (files []lambdaImpl.FileLike, topErr error) {
func (lcc *lambdaCmd) unzipAndGetTopLevelFiles(dst, src string) (files []lambdaImpl.FileLike, topErr error) {
files = make([]lambdaImpl.FileLike, 0)
zipReader, err := zip.OpenReader(src)
@@ -212,7 +209,7 @@ func (lcc *lambdaCreateCmd) unzipAndGetTopLevelFiles(dst, src string) (files []l
return
}
func (lcc *lambdaCreateCmd) getFunction() (*aws_lambda.GetFunctionOutput, error) {
func (lcc *lambdaCmd) getFunction() (*aws_lambda.GetFunctionOutput, error) {
creds := aws_credentials.NewChainCredentials([]aws_credentials.Provider{
&aws_credentials.EnvProvider{},
&aws_credentials.SharedCredentialsProvider{
@@ -232,7 +229,7 @@ func (lcc *lambdaCreateCmd) getFunction() (*aws_lambda.GetFunctionOutput, error)
return resp, err
}
func (lcc *lambdaCreateCmd) init(c *cli.Context) {
func (lcc *lambdaCmd) init(c *cli.Context) {
handler := c.String("handler")
functionName := c.String("function-name")
runtime := c.String("runtime")
@@ -244,7 +241,13 @@ func (lcc *lambdaCreateCmd) init(c *cli.Context) {
profile := c.String("profile")
region := c.String("region")
lcc.fileNames = c.Args()
if c.Command.Name == "aws-import" {
if len(c.Args()) > 0 {
lcc.arn = c.Args()[0]
}
} else {
lcc.fileNames = c.Args()
}
lcc.handler = handler
lcc.functionName = functionName
lcc.runtime = runtime
@@ -257,7 +260,7 @@ func (lcc *lambdaCreateCmd) init(c *cli.Context) {
lcc.awsRegion = region
}
func (lcc *lambdaCreateCmd) create(c *cli.Context) error {
func (lcc *lambdaCmd) create(c *cli.Context) error {
lcc.init(c)
files := make([]lambdaImpl.FileLike, 0, len(lcc.fileNames))
@@ -266,7 +269,7 @@ func (lcc *lambdaCreateCmd) create(c *cli.Context) error {
Base: fmt.Sprintf("iron/lambda-%s", lcc.runtime),
Package: "",
Handler: lcc.handler,
OutputStream: NewDockerJsonWriter(os.Stdout),
OutputStream: newDockerJsonWriter(os.Stdout),
RawJSONStream: true,
}
@@ -299,7 +302,7 @@ func (lcc *lambdaCreateCmd) create(c *cli.Context) error {
return lambdaImpl.CreateImage(opts, files...)
}
func (lcc *lambdaCreateCmd) runTest(c *cli.Context) error {
func (lcc *lambdaCmd) runTest(c *cli.Context) error {
lcc.init(c)
exists, err := lambdaImpl.ImageExists(lcc.functionName)
if err != nil {
@@ -313,7 +316,7 @@ func (lcc *lambdaCreateCmd) runTest(c *cli.Context) error {
return lambdaImpl.RunImageWithPayload(lcc.functionName, lcc.payload)
}
func (lcc *lambdaCreateCmd) awsImport(c *cli.Context) error {
func (lcc *lambdaCmd) awsImport(c *cli.Context) error {
lcc.init(c)
function, err := lcc.getFunction()
if err != nil {
@@ -362,7 +365,7 @@ func (lcc *lambdaCreateCmd) awsImport(c *cli.Context) error {
Base: fmt.Sprintf("iron/lambda-%s", *function.Configuration.Runtime),
Package: "",
Handler: *function.Configuration.Handler,
OutputStream: NewDockerJsonWriter(os.Stdout),
OutputStream: newDockerJsonWriter(os.Stdout),
RawJSONStream: true,
}
@@ -382,7 +385,7 @@ func (lcc *lambdaCreateCmd) awsImport(c *cli.Context) error {
}
func lambda() cli.Command {
lcc := lambdaCreateCmd{}
lcc := lambdaCmd{}
var flags []cli.Flag
flags = append(flags, lcc.getFlags()...)