| package main |
| |
| import ( |
| "flag" |
| "github.com/30x/apid" |
| "github.com/30x/apid/factory" |
| _ "github.com/30x/apidGatewayDeploy" |
| "io/ioutil" |
| "github.com/apigee-labs/transicator/common" |
| "github.com/30x/apidGatewayDeploy" |
| "os" |
| ) |
| |
| func main() { |
| manifestFlag := flag.String("manifest", "", "file path to a manifest yaml file") |
| flag.Parse() |
| manifestFile := *manifestFlag |
| |
| // initialize apid using default services |
| apid.Initialize(factory.DefaultServicesFactory()) |
| |
| log := apid.Log() |
| log.Debug("initializing...") |
| |
| config := apid.Config() |
| |
| // if manifest is specified, start with only the manifest using a temp dir |
| var manifest []byte |
| if manifestFile != "" { |
| var err error |
| manifest, err = ioutil.ReadFile(manifestFile) |
| if err != nil { |
| log.Errorf("ERROR: Unable to read manifest at %s", manifestFile) |
| return |
| } |
| |
| log.Printf("Running in temp dir with manifest: %s", manifestFile) |
| tmpDir, err := ioutil.TempDir("", "apidGatewayDeploy") |
| if err != nil { |
| log.Panicf("ERROR: Unable to create temp dir", err) |
| } |
| defer os.RemoveAll(tmpDir) |
| config.Set("data_path", tmpDir) |
| config.Set("gatewaydeploy_bundle_dir", tmpDir) |
| } |
| |
| // this will call all initialization functions on all registered plugins |
| apid.InitializePlugins() |
| |
| if manifest != nil { |
| insertTestRecord(manifest) |
| } |
| |
| // print the base url to the console |
| basePath := "/deployments" |
| port := config.GetString("api_port") |
| log.Print() |
| log.Printf("API is at: http://localhost:%s%s", port, basePath) |
| log.Print() |
| |
| // start client API listener |
| api := apid.API() |
| err := api.Listen() // doesn't return if no error |
| log.Fatalf("Error. Is something already running on port %d? %s", port, err) |
| } |
| |
| func insertTestRecord(manifest []byte) { |
| |
| row := common.Row{} |
| row["id"] = &common.ColumnVal{Value: "deploymentID"} |
| row["manifest_body"] = &common.ColumnVal{Value: string(manifest)} |
| |
| var event = common.Snapshot{} |
| event.Tables = []common.Table{ |
| { |
| Name: apiGatewayDeploy.MANIFEST_TABLE, |
| Rows: []common.Row{row}, |
| }, |
| } |
| |
| apid.Events().Emit(apiGatewayDeploy.APIGEE_SYNC_EVENT, &event) |
| } |