Hide keyboard shortcuts

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

from __future__ import absolute_import, division, print_function 

 

import argparse 

import os 

import tempfile 

 

from appr.commands.command_base import CommandBase 

from appr.commands.pull import PullCmd 

from appr.plugins.helm import Helm 

 

LOCAL_DIR = os.path.dirname(__file__) 

 

 

class HelmCmd(CommandBase): 

name = 'helm' 

help_message = 'Deploy with Helm on Kubernetes' 

parse_unknown = True 

 

def __init__(self, options): 

super(HelmCmd, self).__init__(options) 

self.status = {} 

 

def exec_helm_cmd(self, cmd, options, helm_opts): 

pull_cmd = PullCmd(options) 

pull_cmd.exec_cmd(render=False) 

helm_cli = Helm() 

output = helm_cli.action(cmd, pull_cmd.path, helm_opts) 

self.status = {'result': output} 

self.render() 

 

@classmethod 

def _install(cls, options, unknown=None): 

cmd = cls(options) 

cmd.exec_helm_cmd('install', options, unknown) 

 

@classmethod 

def _upgrade(cls, options, unknown=None): 

cmd = cls(options) 

cmd.exec_helm_cmd('upgrade', options, unknown) 

 

@classmethod 

def _dep_pull(cls, options, unknown=None): 

cmd = cls(options) 

helm_cli = Helm() 

cmd.status = {'result': helm_cli.build_dep(dest=options.dest, overwrite=options.overwrite)} 

cmd.render() 

 

@classmethod 

def _init_args(cls, subcmd): 

cls._add_registryhost_option(subcmd) 

cls._add_packagename_option(subcmd) 

cls._add_packageversion_option(subcmd) 

subcmd.add_argument('-t', '--media-type', default='helm', help=argparse.SUPPRESS) 

 

subcmd.add_argument('--dest', default=tempfile.gettempdir(), 

help='directory used to extract resources') 

subcmd.add_argument('--tarball', action='store_true', default=True, help=argparse.SUPPRESS) 

 

@classmethod 

def _init_dep_args(cls, subcmd): 

subcmd.add_argument('--dest', default="appr_charts", 

help='directory used to extract resources') 

subcmd.add_argument('--overwrite', action='store_true', default=False, 

help="auto-merge requirements.yaml with the appr dependencies") 

 

@classmethod 

def _add_arguments(cls, parser): 

sub = parser.add_subparsers() 

install_cmd = sub.add_parser('install') 

upgrade_cmd = sub.add_parser('upgrade') 

dep_pull_cmd = sub.add_parser('dep') 

cls._init_dep_args(dep_pull_cmd) 

cls._init_args(install_cmd) 

cls._init_args(upgrade_cmd) 

install_cmd.set_defaults(func=cls._install) 

upgrade_cmd.set_defaults(func=cls._upgrade) 

dep_pull_cmd.set_defaults(func=cls._dep_pull) 

 

def _render_dict(self): 

return self.status 

 

def _render_console(self): 

return self.status['result']