Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

# Copyright (C) 2012  Internet Systems Consortium. 

# 

# Permission to use, copy, modify, and distribute this software for any 

# purpose with or without fee is hereby granted, provided that the above 

# copyright notice and this permission notice appear in all copies. 

# 

# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SYSTEMS CONSORTIUM 

# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL 

# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL 

# INTERNET SYSTEMS CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, 

# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING 

# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, 

# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 

# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 

 

# This file provides a built-in set of 'execute' commands, for common 

# functions, such as adding an initial auth server. 

# By calling the function prepare_execute_commands, the 

# commands in the command_sets map are added to the virtual 

# component called 'execute'. This is done in bindctl_main. 

 

from bindctl.moduleinfo import * 

# The name of the 'virtual' command set execution module in bindctl 

EXECUTE_MODULE_NAME = 'execute' 

 

# This is a map of command names to lists 

# Each element in the set should itself be a dict containing: 

# 'description': A string with a description of the command set 

# 'commands': A list of bindctl commands 

command_sets = { 

    'init_authoritative_server': { 

        'description': 

            'Configure and run a basic Authoritative server, with default '+ 

            'SQLite3 backend, and xfrin and xfrout functionality', 

        'commands': 

            [ 

            '!echo adding Authoritative server component', 

            'config add /Boss/components b10-auth', 

            'config set /Boss/components/b10-auth/kind needed', 

            'config set /Boss/components/b10-auth/special auth', 

            '!echo adding Xfrin component', 

            'config add /Boss/components b10-xfrin', 

            'config set /Boss/components/b10-xfrin/address Xfrin', 

            'config set /Boss/components/b10-xfrin/kind dispensable', 

            '!echo adding Xfrout component', 

            'config add /Boss/components b10-xfrout', 

            'config set /Boss/components/b10-xfrout/address Xfrout', 

            'config set /Boss/components/b10-xfrout/kind dispensable', 

            '!echo adding Zone Manager component', 

            'config add /Boss/components b10-zonemgr', 

            'config set /Boss/components/b10-zonemgr/address Zonemgr', 

            'config set /Boss/components/b10-zonemgr/kind dispensable', 

            '!echo Components added. Please enter "config commit" to', 

            '!echo finalize initial setup and run the components.' 

            ] 

    } 

} 

 

def has_command_set(name): 

    return name in command_sets 

 

def get_commands(name): 

    return command_sets[name]['commands'] 

 

def get_description(name): 

    return command_sets[name]['description'] 

 

# For each 

def prepare_execute_commands(tool): 

    """This function is called by bindctl_main, and sets up the commands 

       defined here for use in bindctl.""" 

    # common parameter 

    param_show = ParamInfo(name="show", type="string", optional=True, 

        desc="Show the list of commands without executing them") 

 

    # The command module 

    module = ModuleInfo(name=EXECUTE_MODULE_NAME, 

                        desc="Execute a given set of commands") 

 

    # Command to execute a file 

    cmd = CommandInfo(name="file", desc="Read commands from file") 

    param = ParamInfo(name="filename", type="string", optional=False, 

                      desc="File to read the set of commands from.") 

    cmd.add_param(param) 

    cmd.add_param(param_show) 

    module.add_command(cmd) 

 

    # and loop through all command sets defined above 

    for name in command_sets: 

        cmd = CommandInfo(name=name, desc=get_description(name)) 

        cmd.add_param(param_show) 

        module.add_command(cmd) 

 

    tool.add_module_info(module)