func (c *DebugHooksCommand) validateHooks() error { if len(c.hooks) == 0 { return nil } service := names.UnitService(c.Target) relations, err := c.apiClient.ServiceCharmRelations(service) if err != nil { return err } validHooks := make(map[string]bool) for _, hook := range hooks.UnitHooks() { validHooks[string(hook)] = true } for _, relation := range relations { for _, hook := range hooks.RelationHooks() { hook := fmt.Sprintf("%s-%s", relation, hook) validHooks[hook] = true } } for _, hook := range c.hooks { if !validHooks[hook] { names := make([]string, 0, len(validHooks)) for hookName, _ := range validHooks { names = append(names, hookName) } sort.Strings(names) logger.Infof("unknown hook %s, valid hook names: %v", hook, names) return fmt.Errorf("unit %q does not contain hook %q", c.Target, hook) } } return nil }
func generateRelationHooks(relName string, allHooks map[string]bool) { for _, hookName := range hooks.RelationHooks() { allHooks[fmt.Sprintf("%s-%s", relName, hookName)] = true } }