|
- /*
- * Copyright 2022 The Dragonfly Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- package config
-
- import (
- "errors"
- "fmt"
- "net/url"
- )
-
- type DfstoreConfig struct {
- // Address of the object storage service.
- Endpoint string `yaml:"endpoint,omitempty" mapstructure:"endpoint,omitempty"`
-
- // Filter is used to generate a unique Task ID by
- // filtering unnecessary query params in the URL,
- // it is separated by & character.
- Filter string `yaml:"filter,omitempty" mapstructure:"filter,omitempty"`
-
- // Mode is the mode in which the backend is written,
- // including WriteBack and AsyncWriteBack.
- Mode int `yaml:"mode,omitempty" mapstructure:"mode,omitempty"`
-
- // MaxReplicas is the maximum number of
- // replicas of an object cache in seed peers.
- MaxReplicas int `yaml:"maxReplicas,omitempty" mapstructure:"mode,maxReplicas"`
- }
-
- // New dfstore configuration.
- func NewDfstore() *DfstoreConfig {
- url := url.URL{
- Scheme: "http",
- Host: fmt.Sprintf("%s:%d", "127.0.0.1", DefaultObjectStorageStartPort),
- }
-
- return &DfstoreConfig{
- Endpoint: url.String(),
- MaxReplicas: DefaultObjectMaxReplicas,
- }
- }
-
- func (cfg *DfstoreConfig) Validate() error {
- if cfg.Endpoint == "" {
- return errors.New("dfstore requires parameter endpoint")
- }
-
- if _, err := url.ParseRequestURI(cfg.Endpoint); err != nil {
- return fmt.Errorf("invalid endpoint: %w", err)
- }
-
- return nil
- }
|