MCPcopy Create free account
hub / github.com/bytesizedhosting/bcd / Install

Method Install

plugins/sickrage/sickrage.go:37–99  ·  view source on GitHub ↗
(opts *SickrageOpts)

Source from the content-addressed store, hash-verified

35}
36
37func (self *Sickrage) Install(opts *SickrageOpts) error {
38 var err error
39
40 err = opts.SetDefault("rtorrent")
41 if err != nil {
42 return err
43 }
44
45 log.WithFields(log.Fields{
46 "plugin": self.Name,
47 "datafolder": opts.DataFolder,
48 "configfolder": opts.ConfigFolder,
49 "media_folder": opts.MediaFolder,
50 "username": opts.Username,
51 "deluge_pass": opts.DelugePassword,
52 "deluge_weburl": opts.DelugeWebUrl,
53 }).Debug("Sickrage options")
54
55 err = os.MkdirAll(opts.ConfigFolder, 0755)
56 if err != nil {
57 return err
58 }
59
60 err = self.WriteTemplate("plugins/sickrage/data/config.ini", opts.ConfigFolder+"/config.ini", opts)
61 if err != nil {
62 return err
63 }
64
65 log.Debugln("Pulling docker image", self.imageName)
66 err = self.DockerClient.PullImage(docker.PullImageOptions{Repository: self.imageName}, docker.AuthConfiguration{})
67 if err != nil {
68 return err
69 }
70
71 portBindings := map[docker.Port][]docker.PortBinding{
72 "8081/tcp": []docker.PortBinding{docker.PortBinding{HostPort: opts.WebPort}},
73 }
74
75 hostConfig := docker.HostConfig{
76 PortBindings: portBindings,
77 Binds: plugins.DefaultBindings(opts),
78 }
79
80 conf := docker.Config{Env: []string{"PUID=" + opts.User.Uid}, Image: self.imageName}
81
82 log.Debugln("Creating docker container")
83 c, err := self.DockerClient.CreateContainer(docker.CreateContainerOptions{Config: &conf, HostConfig: &hostConfig, Name: "bytesized_sickrage_" + opts.WebPort})
84
85 if err != nil {
86 return err
87 }
88
89 log.Debugln("Starting docker container")
90
91 err = self.DockerClient.StartContainer(c.ID, nil)
92 if err != nil {
93 return err
94 }

Callers

nothing calls this directly

Calls 2

SetDefaultMethod · 0.80
WriteTemplateMethod · 0.80

Tested by

no test coverage detected