* [PATCH v2 1/8] zone: add config hid functions
@ 2017-07-26 8:44 Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 2/8] zone: accept also hids in zone_config() Jonatan Schlag
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: Jonatan Schlag @ 2017-07-26 8:44 UTC (permalink / raw)
To: network
[-- Attachment #1: Type: text/plain, Size: 2496 bytes --]
These are the basic functions to work with hids.
Fixes: #11406
Signed-off-by: Jonatan Schlag <jonatan.schlag(a)ipfire.org>
---
src/functions/functions.zone | 80 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 80 insertions(+)
diff --git a/src/functions/functions.zone b/src/functions/functions.zone
index bba1705..0696750 100644
--- a/src/functions/functions.zone
+++ b/src/functions/functions.zone
@@ -656,6 +656,69 @@ zone_config_list_ids() {
echo ${ids}
}
+# List all hids of a zone
+zone_config_list_hids() {
+ assert [ $# -eq 1 ]
+ local zone=${1}
+
+ local config
+ local hids
+
+ for config in $(zone_configs_list ${zone}); do
+ # Append hids to the list
+ zone_config_get_hid "${zone}" "${config}"
+ done
+}
+
+# get the hid from a given config
+zone_config_get_hid() {
+ assert [ $# -eq 2 ]
+ local zone=${1}
+ local config=${2}
+
+ local hook
+
+ hook="$(zone_config_get_hook "${zone}" "${config}")"
+ hook_exec "config" "${hook}" "hid" "${zone}" "${config}"
+}
+
+# Checks if a hid is valid for a given zone
+zone_config_hid_is_valid() {
+ assert [ $# -eq 2]
+ local zone=${1}
+ local hid=${2}
+
+ local _hid
+ for _hid in $(zone_config_list_hids "${zone}"); do
+ if [[ ${_hid} = ${hid} ]]; then
+ return ${EXIT_TRUE}
+ fi
+ done
+
+ return ${EXIT_FALSE}
+}
+
+# This function converts a hid to a id
+zone_config_convert_hid_to_id() {
+ assert [ $# -eq 2 ]
+ local zone=${1}
+ local hid=${2}
+
+ local hook
+ local config
+
+ for config in $(zone_configs_list ${zone}); do
+ # Get hook from config
+ hook="$(zone_config_get_hook "${zone}" "${config}")"
+ if [[ "$(hook_exec "config" "${hook}" "hid" "${zone}" "${config}")" == "${hid}" ]]; then
+ config_get_id_from_config "${config}"
+ return ${EXIT_TRUE}
+ fi
+ done
+
+ return ${EXIT_FALSE}
+}
+
zone_show() {
local zone=${1}
@@ -1114,6 +1177,23 @@ zone_config_id_is_valid() {
[ -f ${zone_path}/configs/*.${id} ];
}
+# This function checks if a given hid is valid for a zone
+# Return True when yes and false when no
+zone_config_hid_is_valid() {
+ assert [ $# -eq 2 ]
+ local zone=${1}
+ local hid=${2}
+
+ local _hid
+ for _hid in $(zone_config_list_hids ${zone}); do
+ if [[ ${_hid} == ${hid} ]]; then
+ return ${EXIT_TRUE}
+ fi
+ done
+
+ return ${EXIT_FALSE}
+}
+
zone_config_get_hook_from_id() {
# Returns the hook for a given id
assert [ $# -eq 2 ]
--
2.6.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 2/8] zone: accept also hids in zone_config()
2017-07-26 8:44 [PATCH v2 1/8] zone: add config hid functions Jonatan Schlag
@ 2017-07-26 8:44 ` Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 3/8] zone: config list print also hids Jonatan Schlag
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Jonatan Schlag @ 2017-07-26 8:44 UTC (permalink / raw)
To: network
[-- Attachment #1: Type: text/plain, Size: 2380 bytes --]
Signed-off-by: Jonatan Schlag <jonatan.schlag(a)ipfire.org>
---
src/functions/functions.zone | 46 ++++++++++++++++++++++++++++++--------------
1 file changed, 32 insertions(+), 14 deletions(-)
diff --git a/src/functions/functions.zone b/src/functions/functions.zone
index 0696750..90dfbc6 100644
--- a/src/functions/functions.zone
+++ b/src/functions/functions.zone
@@ -550,28 +550,46 @@ zone_config() {
zone_config_new "${zone}" "$@"
;;
destroy)
- local id=${1}
- if zone_config_id_is_valid ${zone} ${id}; then
- zone_config_destroy "${zone}" "$@"
+ # usually ${1} is a valid hid
+ local hid=${1}
+ shift 1
+ # We convert the hid into an id
+ local id=$(zone_config_convert_hid_to_id ${zone} ${hid})
+ # If id isset the hid is valid and we can go on with the id
+ if isset id; then
+ zone_config_destroy "${zone}" "${id}" "$@"
else
- log ERROR "${id} is not a valid id"
+ # We get no valid hid so we check if we get a valid id
+ if zone_config_id_is_valid ${zone} ${hid}; then
+ zone_config_destroy "${zone}" ${hid} "$@"
+ else
+ log ERROR "${id} is not a valid id or hid"
+ fi
fi
;;
list)
zone_config_list "${zone}" "$@"
;;
*)
- # Check is we get a valid id
- # TODO This could be also a valid hid
- local id=${cmd}
-
- if zone_config_id_is_valid ${zone} ${id} && [[ ${1} == "edit" ]]; then
- shift 1
- zone_config_edit "${zone}" "${id}" "$@"
+ # usually ${1} is a valid hid
+ local hid=${cmd}
+ local cmd=${1}
+ shift 1
+ local id=$(zone_config_convert_hid_to_id ${zone} ${hid})
+ # If id isset the hid is valid and we can go on with the id
+ if isset id && [[ ${cmd} == "edit" ]]; then
+ zone_config_edit "${zone}" "${id}" "$@"
else
- error "Unrecognized argument: ${cmd}"
- cli_usage root-zone-config-subcommands
- exit ${EXIT_ERROR}
+ # We get no valid hid so we check if we get a valid id
+ if zone_config_id_is_valid ${zone} ${id} && [[ ${cmd} == "edit" ]]; then
+ shift 1
+ zone_config_edit "${zone}" "${id}" "$@"
+ else
+ # in ${hid} is saved the command after network zone ${zone} config
+ error "Unrecognized argument: ${hid}"
+ cli_usage root-zone-config-subcommands
+ exit ${EXIT_ERROR}
+ fi
fi
;;
esac
--
2.6.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 3/8] zone: config list print also hids
2017-07-26 8:44 [PATCH v2 1/8] zone: add config hid functions Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 2/8] zone: accept also hids in zone_config() Jonatan Schlag
@ 2017-07-26 8:44 ` Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 4/8] hook: also hook_hid is a valid command Jonatan Schlag
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Jonatan Schlag @ 2017-07-26 8:44 UTC (permalink / raw)
To: network
[-- Attachment #1: Type: text/plain, Size: 981 bytes --]
Signed-off-by: Jonatan Schlag <jonatan.schlag(a)ipfire.org>
---
src/functions/functions.zone | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/functions/functions.zone b/src/functions/functions.zone
index 90dfbc6..7947d9a 100644
--- a/src/functions/functions.zone
+++ b/src/functions/functions.zone
@@ -637,21 +637,22 @@ zone_config_list() {
assert isset zone
# Print a nice header
- local format="%-3s %-20s"
- print "${format}" "ID" "HOOK"
+ local format="%-3s %-20s %-20s"
+ print "${format}" "ID" "HOOK" "HID"
local config
local hook
local id
+ local hid
# Print for all config:
# id and hook
- # TODO: Add hids here
for config in $(zone_configs_list "${zone}"); do
id=${config##*.}
hook=$(zone_config_get_hook "${zone}" "${config}")
+ hid=$(zone_config_get_hid "${zone}" "${config}")
assert isset hook
- print "${format}" "${id}" "${hook}"
+ print "${format}" "${id}" "${hook}" "${hid}"
done
}
--
2.6.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 4/8] hook: also hook_hid is a valid command
2017-07-26 8:44 [PATCH v2 1/8] zone: add config hid functions Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 2/8] zone: accept also hids in zone_config() Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 3/8] zone: config list print also hids Jonatan Schlag
@ 2017-07-26 8:44 ` Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 5/8] header-config: add generic hook_hid function Jonatan Schlag
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Jonatan Schlag @ 2017-07-26 8:44 UTC (permalink / raw)
To: network
[-- Attachment #1: Type: text/plain, Size: 537 bytes --]
Signed-off-by: Jonatan Schlag <jonatan.schlag(a)ipfire.org>
---
src/functions/functions.hook | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/functions/functions.hook b/src/functions/functions.hook
index d1f6506..d2f4a78 100644
--- a/src/functions/functions.hook
+++ b/src/functions/functions.hook
@@ -204,7 +204,7 @@ hook_valid_command_config() {
local cmd="${1}"
case "${cmd}" in
- new|destroy|edit|up|down|status)
+ new|destroy|edit|up|down|status|hid)
return ${EXIT_TRUE}
;;
esac
--
2.6.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 5/8] header-config: add generic hook_hid function
2017-07-26 8:44 [PATCH v2 1/8] zone: add config hid functions Jonatan Schlag
` (2 preceding siblings ...)
2017-07-26 8:44 ` [PATCH v2 4/8] hook: also hook_hid is a valid command Jonatan Schlag
@ 2017-07-26 8:44 ` Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 6/8] raw: add command list-zone-config-hids Jonatan Schlag
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Jonatan Schlag @ 2017-07-26 8:44 UTC (permalink / raw)
To: network
[-- Attachment #1: Type: text/plain, Size: 677 bytes --]
This function will always be there so when we call hook_hid we will get a result.
This is also nice for testing.
Signed-off-by: Jonatan Schlag <jonatan.schlag(a)ipfire.org>
---
| 8 ++++++++
1 file changed, 8 insertions(+)
--git a/src/header-config b/src/header-config
index e3c6423..1b6f530 100644
--- a/src/header-config
+++ b/src/header-config
@@ -76,3 +76,11 @@ hook_edit() {
exit ${EXIT_OK}
}
+
+# We will return the id as generic variant of the hid
+# Although this should not be the standard
+hook_hid() {
+ # the zone name would be ${1}
+ local config=${2}
+ config_get_id_from_config "${config}"
+}
--
2.6.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 6/8] raw: add command list-zone-config-hids
2017-07-26 8:44 [PATCH v2 1/8] zone: add config hid functions Jonatan Schlag
` (3 preceding siblings ...)
2017-07-26 8:44 ` [PATCH v2 5/8] header-config: add generic hook_hid function Jonatan Schlag
@ 2017-07-26 8:44 ` Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 7/8] raw: add command zone-config-hid-is-valid Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 8/8] autocompletion: use hids instead of ids Jonatan Schlag
6 siblings, 0 replies; 8+ messages in thread
From: Jonatan Schlag @ 2017-07-26 8:44 UTC (permalink / raw)
To: network
[-- Attachment #1: Type: text/plain, Size: 447 bytes --]
Signed-off-by: Jonatan Schlag <jonatan.schlag(a)ipfire.org>
---
src/network | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/network b/src/network
index adc9ac3..7965d62 100644
--- a/src/network
+++ b/src/network
@@ -1380,6 +1380,9 @@ cli_raw() {
list-zone-config-ids)
zone_config_list_ids $@
;;
+ list-zone-config-hids)
+ zone_config_list_hids $@
+ ;;
zone-name-is-valid)
zone_name_is_valid $@
;;
--
2.6.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 7/8] raw: add command zone-config-hid-is-valid
2017-07-26 8:44 [PATCH v2 1/8] zone: add config hid functions Jonatan Schlag
` (4 preceding siblings ...)
2017-07-26 8:44 ` [PATCH v2 6/8] raw: add command list-zone-config-hids Jonatan Schlag
@ 2017-07-26 8:44 ` Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 8/8] autocompletion: use hids instead of ids Jonatan Schlag
6 siblings, 0 replies; 8+ messages in thread
From: Jonatan Schlag @ 2017-07-26 8:44 UTC (permalink / raw)
To: network
[-- Attachment #1: Type: text/plain, Size: 468 bytes --]
Signed-off-by: Jonatan Schlag <jonatan.schlag(a)ipfire.org>
---
src/network | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/network b/src/network
index 7965d62..16c8f60 100644
--- a/src/network
+++ b/src/network
@@ -1389,6 +1389,9 @@ cli_raw() {
zone-config-id-is-valid)
zone_config_id_is_valid $@
;;
+ zone-config-hid-is-valid)
+ zone_config_hid_is_valid $@
+ ;;
*)
error "No such command: ${cmd}"
exit ${EXIT_ERROR}
--
2.6.3
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 8/8] autocompletion: use hids instead of ids
2017-07-26 8:44 [PATCH v2 1/8] zone: add config hid functions Jonatan Schlag
` (5 preceding siblings ...)
2017-07-26 8:44 ` [PATCH v2 7/8] raw: add command zone-config-hid-is-valid Jonatan Schlag
@ 2017-07-26 8:44 ` Jonatan Schlag
6 siblings, 0 replies; 8+ messages in thread
From: Jonatan Schlag @ 2017-07-26 8:44 UTC (permalink / raw)
To: network
[-- Attachment #1: Type: text/plain, Size: 1093 bytes --]
Signed-off-by: Jonatan Schlag <jonatan.schlag(a)ipfire.org>
---
src/bash-completion/network | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/bash-completion/network b/src/bash-completion/network
index 820c2d4..529a772 100644
--- a/src/bash-completion/network
+++ b/src/bash-completion/network
@@ -421,7 +421,7 @@ _network_zone_subcommand_config() {
local words=( $@ )
- local commands="destroy list new $(network raw list-zone-config-ids ${zone})"
+ local commands="destroy list new $(network raw list-zone-config-hids ${zone})"
local cmd="$(_network_find_on_cmdline "${commands}")"
if [[ -z "${cmd}" ]]; then
@@ -442,7 +442,7 @@ _network_zone_subcommand_config() {
*)
# Check if we get a valid id
# TODO: We should also accept a valid hid
- if network raw zone-config-id-is-valid ${zone} ${cmd}; then
+ if network raw zone-config-id-is-valid ${zone} ${cmd} || network raw zone-config-hid-is-valid ${zone} ${cmd}; then
_network_zone_subcommand_config_subcommand ${zone} ${args}
fi
;;
--
2.6.3
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2017-07-26 8:44 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-26 8:44 [PATCH v2 1/8] zone: add config hid functions Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 2/8] zone: accept also hids in zone_config() Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 3/8] zone: config list print also hids Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 4/8] hook: also hook_hid is a valid command Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 5/8] header-config: add generic hook_hid function Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 6/8] raw: add command list-zone-config-hids Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 7/8] raw: add command zone-config-hid-is-valid Jonatan Schlag
2017-07-26 8:44 ` [PATCH v2 8/8] autocompletion: use hids instead of ids Jonatan Schlag
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox