MCPcopy Create free account
hub / github.com/1Panel-dev/1Panel / UpdateLoadBalance

Method UpdateLoadBalance

agent/app/service/website_lb.go:130–181  ·  view source on GitHub ↗
(req request.WebsiteLBUpdate)

Source from the content-addressed store, hash-verified

128}
129
130func (w WebsiteService) UpdateLoadBalance(req request.WebsiteLBUpdate) error {
131 website, err := websiteRepo.GetFirst(repo.WithByID(req.WebsiteID))
132 if err != nil {
133 return err
134 }
135 nginxInstall, err := getAppInstallByKey(constant.AppOpenresty)
136 if err != nil {
137 return err
138 }
139 includeDir := GetSitePath(website, SiteUpstreamDir)
140 fileOp := files.NewFileOp()
141 safeName := path.Base(req.Name)
142 if safeName != req.Name || strings.Contains(safeName, "..") {
143 return buserr.New("ErrInvalidParams")
144 }
145 filePath := path.Join(includeDir, fmt.Sprintf("%s.conf", req.Name))
146 if !fileOp.Stat(filePath) {
147 return nil
148 }
149 oldContent, err := fileOp.GetContent(filePath)
150 if err != nil {
151 return err
152 }
153 parser, err := parser.NewParser(filePath)
154 if err != nil {
155 return err
156 }
157 config, err := parser.Parse()
158 if err != nil {
159 return err
160 }
161 upstreams := config.FindUpstreams()
162 for _, up := range upstreams {
163 if up.UpstreamName == req.Name {
164 directives := up.GetDirectives()
165 for _, d := range directives {
166 dName := d.GetName()
167 if _, ok := dto.LBAlgorithms[dName]; ok {
168 up.RemoveDirective(dName, nil)
169 }
170 }
171 if req.Algorithm != "default" {
172 up.UpdateDirective(req.Algorithm, []string{})
173 }
174 up.UpstreamServers = parseUpstreamServers(req.Servers)
175 }
176 }
177 if err = nginx.WriteConfig(config, nginx.IndentedStyle); err != nil {
178 return buserr.WithErr("ErrUpdateBuWebsite", err)
179 }
180 return nginxCheckAndReload(string(oldContent), filePath, nginxInstall.ContainerName)
181}
182
183func (w WebsiteService) DeleteLoadBalance(req request.WebsiteLBDelete) error {
184 website, err := websiteRepo.GetFirst(repo.WithByID(req.WebsiteID))

Callers

nothing calls this directly

Calls 14

StatMethod · 0.95
GetContentMethod · 0.95
ParseMethod · 0.95
getAppInstallByKeyFunction · 0.85
GetSitePathFunction · 0.85
parseUpstreamServersFunction · 0.85
nginxCheckAndReloadFunction · 0.85
FindUpstreamsMethod · 0.80
GetFirstMethod · 0.65
WithByIDMethod · 0.65
GetDirectivesMethod · 0.65
GetNameMethod · 0.65

Tested by

no test coverage detected