func (cmd UpdateSecurityGroup) Run(context *cli.Context) { name := context.Args()[0] securityGroup, err := cmd.securityGroupRepo.Read(name) if err != nil { cmd.ui.Failed(err.Error()) } pathToJSONFile := context.Args()[1] rules, err := json.ParseJSON(pathToJSONFile) if err != nil { cmd.ui.Failed(err.Error()) } cmd.ui.Say(T("Updating security group {{.security_group}} as {{.username}}", map[string]interface{}{ "security_group": terminal.EntityNameColor(name), "username": terminal.EntityNameColor(cmd.configRepo.Username()), })) err = cmd.securityGroupRepo.Update(securityGroup.Guid, rules) if err != nil { cmd.ui.Failed(err.Error()) } cmd.ui.Ok() cmd.ui.Say("\n\n") cmd.ui.Say(T("TIP: Changes will not apply to existing running applications until they are restarted.")) }
func (cmd CreateSecurityGroup) Run(context *cli.Context) { name := context.Args()[0] pathToJSONFile := context.Args()[1] rules, err := json.ParseJSON(pathToJSONFile) if err != nil { cmd.ui.Failed(T(`Incorrect json format: file: {{.JSONFile}} Valid json file example: [ { "protocol": "tcp", "destination": "10.244.1.18", "ports": "3306" } ]`, map[string]interface{}{"JSONFile": pathToJSONFile})) } cmd.ui.Say(T("Creating security group {{.security_group}} as {{.username}}", map[string]interface{}{ "security_group": terminal.EntityNameColor(name), "username": terminal.EntityNameColor(cmd.configRepo.Username()), })) err = cmd.securityGroupRepo.Create(name, rules) httpErr, ok := err.(errors.HttpError) if ok && httpErr.ErrorCode() == errors.SECURITY_GROUP_EXISTS { cmd.ui.Ok() cmd.ui.Warn(T("Security group {{.security_group}} {{.error_message}}", map[string]interface{}{ "security_group": terminal.EntityNameColor(name), "error_message": terminal.WarningColor(T("already exists")), })) return } if err != nil { cmd.ui.Failed(err.Error()) } cmd.ui.Ok() }
var tmpFile *os.File Context("when everything is proper", func() { BeforeEach(func() { tmpFile, _ = ioutil.TempFile("", "WONDERFULFILEWHOSENAMEISHARDTOREADBUTCONTAINSVALIDJSON") filename = tmpFile.Name() ioutil.WriteFile(filename, []byte("[{\"akey\": \"avalue\"}]"), 0644) }) AfterEach(func() { tmpFile.Close() os.Remove(tmpFile.Name()) }) It("converts a json file into an unmarshalled slice of string->string map objects", func() { stringMaps, err := json.ParseJSON(filename) Expect(err).To(BeNil()) Expect(stringMaps[0]["akey"]).To(Equal("avalue")) }) }) Context("when the JSON is invalid", func() { BeforeEach(func() { tmpFile, _ = ioutil.TempFile("", "TERRIBLEFILECONTAININGINVALIDJSONWHICHMAKESEVERYTHINGTERRIBLEANDSTILLHASANAMETHATSHARDTOREAD") filename = tmpFile.Name() ioutil.WriteFile(filename, []byte("SCARY NOISES}"), 0644) }) AfterEach(func() { tmpFile.Close() os.Remove(tmpFile.Name())