Compare commits
53 commits
Author | SHA1 | Date | |
---|---|---|---|
|
464db4e5cc | ||
|
589e337e28 | ||
|
7b298f7a35 | ||
|
8ed6f5a773 | ||
|
b08640f26a | ||
|
3d49194ccd | ||
|
a19c7e1fb5 | ||
|
b0743636a1 | ||
|
2c703978bb | ||
|
0a3357e571 | ||
|
47644c13c2 | ||
|
14691698f6 | ||
|
66bd6308ce | ||
|
48db32c858 | ||
|
0d5651028c | ||
|
7bcf6d3f68 | ||
|
c0c79997d0 | ||
|
c6adde03af | ||
|
23e9c904d6 | ||
|
8ae23aad30 | ||
|
aa7e052d7a | ||
|
13ae459d2a | ||
|
154a4e1e87 | ||
|
30a5136b24 | ||
|
438b5360c1 | ||
|
b21211552f | ||
|
2f05111192 | ||
|
8ebf66426a | ||
|
be6c458f23 | ||
|
9fa6edaa3e | ||
|
464ef72e6b | ||
|
cea39ddd88 | ||
|
99af97736c | ||
|
7e7c887231 | ||
|
a7750c5c98 | ||
|
7967188513 | ||
|
bb370151e6 | ||
|
2a76e3e2b4 | ||
|
d5d19cf448 | ||
|
deaddd2953 | ||
|
5efbbce6c7 | ||
|
82fe22e013 | ||
|
090fdf1715 | ||
|
13fbbce816 | ||
|
d06530d0ca | ||
|
2df6672acc | ||
|
620586fa73 | ||
|
4806936c71 | ||
|
d7db155d88 | ||
|
bbccabcd27 | ||
|
e3e7bc1110 | ||
|
b068369e86 | ||
|
ca2fab72fd |
4367 changed files with 2391 additions and 1438006 deletions
29
.github/workflows/ci.yml
vendored
Normal file
29
.github/workflows/ci.yml
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Setup Go for use with actions
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: 1.15
|
||||
- name: Install goimports
|
||||
run: go get golang.org/x/tools/cmd/goimports
|
||||
- name: Set env with list of directories in repo containin go code
|
||||
run: echo GO_USR_DIRS=$(go list -f {{.Dir}} ./... | grep -E -v "/gen-go/|/vendor/") >> $GITHUB_ENV
|
||||
- name: Run goimports check
|
||||
run: test -z `for d in $GO_USR_DIRS; do goimports -d "$d" | tee /dev/stderr; done`
|
||||
- name: Run tests
|
||||
run: go build -o australis *.go
|
31
CHANGELOG
31
CHANGELOG
|
@ -1,3 +1,34 @@
|
|||
1.0.6 (unreleased)
|
||||
|
||||
1.0.5
|
||||
|
||||
* fetch mesos & aurora master nodes
|
||||
* kill an instance from a job
|
||||
|
||||
1.0.4
|
||||
|
||||
* fetch free capacity
|
||||
* simulate task fitting - compute how many tasks can be fit in the remaining capacity
|
||||
|
||||
1.0.3
|
||||
|
||||
* update CI to compile on PRs
|
||||
* Add tier and production in task config
|
||||
* Add fetch quota command
|
||||
* Add priority into job config
|
||||
|
||||
1.0.2
|
||||
|
||||
* Fixing broken Thrift dependency by bumping up backported version to thrift v0.13.2
|
||||
|
||||
1.0.1
|
||||
|
||||
* Added flag -m and --monitor that can be set in order to monitor a job creation or a job kill. By default monitor is set to true.
|
||||
|
||||
1.0.0
|
||||
|
||||
* First stable release.
|
||||
|
||||
0.1.1
|
||||
|
||||
* Removed support for building with dep
|
||||
|
|
|
@ -42,4 +42,3 @@ In MacOS this directory is $(brew --prefix)/etc/bash_completion.d if auto comple
|
|||
rootCmd.GenBashCompletionFile(filename)
|
||||
},
|
||||
}
|
||||
|
||||
|
|
173
cmd/create.go
173
cmd/create.go
|
@ -15,188 +15,47 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
yaml "gopkg.in/yaml.v2"
|
||||
|
||||
realis "github.com/aurora-scheduler/gorealis/v2"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/aurora-scheduler/australis/internal"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(createCmd)
|
||||
createCmd.Flags().BoolVarP(&monitor, "monitor", "m", true, "monitor the result after sending the command")
|
||||
}
|
||||
|
||||
var createCmd = &cobra.Command{
|
||||
Use: "create",
|
||||
Short: "Create an Aurora Job",
|
||||
Run: createJob,
|
||||
Args: cobra.ExactArgs(1),
|
||||
}
|
||||
|
||||
type URI struct {
|
||||
URI string `yaml:"uri"`
|
||||
Extract bool `yaml:"extract"`
|
||||
Cache bool `yaml:"cache"`
|
||||
}
|
||||
|
||||
type Executor struct {
|
||||
Name string `yaml:"name"`
|
||||
Data string `yaml:"data"`
|
||||
}
|
||||
|
||||
type ThermosProcess struct {
|
||||
Name string `yaml:"name"`
|
||||
Cmd string `yaml:"cmd"`
|
||||
}
|
||||
|
||||
type DockerContainer struct {
|
||||
Name string `yaml:"name"`
|
||||
Tag string `yaml:"tag"`
|
||||
}
|
||||
|
||||
type Container struct {
|
||||
Docker *DockerContainer `yaml:"docker"`
|
||||
}
|
||||
|
||||
type Job struct {
|
||||
Environment string `yaml:"environment"`
|
||||
Role string `yaml:"role"`
|
||||
Name string `yaml:"name"`
|
||||
CPU float64 `yaml:"cpu"`
|
||||
RAM int64 `yaml:"ram"`
|
||||
Disk int64 `yaml:"disk"`
|
||||
Executor Executor `yaml:"executor"`
|
||||
Instances int32 `yaml:"instances"`
|
||||
URIs []URI `yaml:"uris"`
|
||||
Metadata map[string]string `yaml:"labels"`
|
||||
Service bool `yaml:"service"`
|
||||
Thermos []ThermosProcess `yaml:",flow,omitempty"`
|
||||
Container *Container `yaml:"container,omitempty"`
|
||||
}
|
||||
|
||||
func (j *Job) Validate() bool {
|
||||
if j.Name == "" {
|
||||
return false
|
||||
}
|
||||
|
||||
if j.Role == "" {
|
||||
return false
|
||||
}
|
||||
|
||||
if j.Environment == "" {
|
||||
return false
|
||||
}
|
||||
|
||||
if j.Instances <= 0 {
|
||||
return false
|
||||
}
|
||||
|
||||
if j.CPU <= 0.0 {
|
||||
return false
|
||||
}
|
||||
|
||||
if j.RAM <= 0 {
|
||||
return false
|
||||
}
|
||||
|
||||
if j.Disk <= 0 {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func unmarshalJob(filename string) (Job, error) {
|
||||
|
||||
job := Job{}
|
||||
|
||||
if jobsFile, err := os.Open(filename); err != nil {
|
||||
return job, errors.Wrap(err, "unable to read the job config file")
|
||||
} else {
|
||||
if err := yaml.NewDecoder(jobsFile).Decode(&job); err != nil {
|
||||
return job, errors.Wrap(err, "unable to parse job config file")
|
||||
}
|
||||
|
||||
if !job.Validate() {
|
||||
return job, errors.New("invalid job config")
|
||||
}
|
||||
}
|
||||
|
||||
return job, nil
|
||||
Args: cobra.RangeArgs(1, 2),
|
||||
}
|
||||
|
||||
func createJob(cmd *cobra.Command, args []string) {
|
||||
|
||||
job, err := unmarshalJob(args[0])
|
||||
job, err := internal.UnmarshalJob(args[0])
|
||||
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
auroraJob := realis.NewJob().
|
||||
Environment(job.Environment).
|
||||
Role(job.Role).
|
||||
Name(job.Name).
|
||||
CPU(job.CPU).
|
||||
RAM(job.RAM).
|
||||
Disk(job.Disk).
|
||||
IsService(job.Service).
|
||||
InstanceCount(job.Instances)
|
||||
|
||||
// Adding URIs.
|
||||
for _, uri := range job.URIs {
|
||||
auroraJob.AddURIs(uri.Extract, uri.Cache, uri.URI)
|
||||
}
|
||||
|
||||
// Adding Metadata.
|
||||
for key, value := range job.Metadata {
|
||||
auroraJob.AddLabel(key, value)
|
||||
}
|
||||
|
||||
// If thermos jobs processes are provided, use them
|
||||
if len(job.Thermos) > 0 {
|
||||
thermosExec := realis.ThermosExecutor{}
|
||||
for _, process := range job.Thermos {
|
||||
thermosExec.AddProcess(realis.NewThermosProcess(process.Name, process.Cmd))
|
||||
}
|
||||
auroraJob.ThermosExecutor(thermosExec)
|
||||
} else if job.Executor.Name != "" {
|
||||
// Non-Thermos executor
|
||||
if job.Executor.Name == "" {
|
||||
log.Fatal("no executor name provided")
|
||||
}
|
||||
|
||||
auroraJob.ExecutorName(job.Executor.Name)
|
||||
auroraJob.ExecutorData(job.Executor.Data)
|
||||
} else if job.Container != nil {
|
||||
if job.Container.Docker == nil {
|
||||
log.Fatal("no container specified")
|
||||
}
|
||||
|
||||
if job.Container.Docker.Tag != "" && !strings.ContainsRune(job.Container.Docker.Name, ':') {
|
||||
job.Container.Docker.Name += ":" + job.Container.Docker.Tag
|
||||
}
|
||||
auroraJob.Container(realis.NewDockerContainer().Image(job.Container.Docker.Name))
|
||||
|
||||
} else {
|
||||
log.Fatal("task does not contain a thermos definition, a custom executor name, or a container to launch")
|
||||
auroraJob, err := job.ToRealis()
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
if err := client.CreateJob(auroraJob); err != nil {
|
||||
log.Fatal("unable to create Aurora job: ", err)
|
||||
}
|
||||
|
||||
if ok, monitorErr := client.MonitorInstances(auroraJob.JobKey(),
|
||||
auroraJob.GetInstanceCount(),
|
||||
5,
|
||||
50); !ok || monitorErr != nil {
|
||||
if err := client.KillJob(auroraJob.JobKey()); err != nil {
|
||||
log.Fatal(monitorErr, err)
|
||||
if monitor {
|
||||
if ok, monitorErr := client.MonitorInstances(auroraJob.JobKey(),
|
||||
auroraJob.GetInstanceCount(),
|
||||
5,
|
||||
50); !ok || monitorErr != nil {
|
||||
if err := client.KillJob(auroraJob.JobKey()); err != nil {
|
||||
log.Fatal(monitorErr, err)
|
||||
}
|
||||
log.Fatal(monitorErr)
|
||||
}
|
||||
log.Fatal(monitorErr)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
453
cmd/fetch.go
453
cmd/fetch.go
|
@ -15,14 +15,33 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/aurora-scheduler/australis/internal"
|
||||
realis "github.com/aurora-scheduler/gorealis/v2"
|
||||
"github.com/aurora-scheduler/gorealis/v2/gen-go/apache/aurora"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/pflag"
|
||||
)
|
||||
|
||||
const (
|
||||
localAgentStateURL = "http://127.0.0.1:5051/state"
|
||||
)
|
||||
|
||||
type mesosAgentState struct {
|
||||
Flags mesosAgentFlags `json:"flags,omitempty"`
|
||||
}
|
||||
|
||||
type mesosAgentFlags struct {
|
||||
Master string `json:"master,omitempty"`
|
||||
hasMaster bool // indicates if the master flag contains direct Master's address
|
||||
}
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(fetchCmd)
|
||||
|
||||
|
@ -61,12 +80,100 @@ func init() {
|
|||
help(cmd, s)
|
||||
})
|
||||
|
||||
mesosLeaderCmd.Flags().String("zkPath", "/mesos", "Zookeeper node path where mesos leader election happens")
|
||||
mesosCmd.AddCommand(mesosLeaderCmd)
|
||||
|
||||
fetchCmd.AddCommand(mesosCmd)
|
||||
|
||||
// Hijack help function to hide unnecessary global flags
|
||||
mesosCmd.SetHelpFunc(func(cmd *cobra.Command, s []string) {
|
||||
if cmd.HasInheritedFlags() {
|
||||
cmd.InheritedFlags().VisitAll(func(f *pflag.Flag) {
|
||||
if f.Name != "logLevel" {
|
||||
f.Hidden = true
|
||||
}
|
||||
})
|
||||
}
|
||||
help(cmd, s)
|
||||
})
|
||||
|
||||
/* Fetch Master nodes/Leader */
|
||||
masterCmd.Flags().String("zkPath", "/aurora/scheduler", "Zookeeper node path to get master nodes/leader")
|
||||
|
||||
fetchCmd.AddCommand(masterCmd)
|
||||
|
||||
// Hijack help function to hide unnecessary global flags
|
||||
masterCmd.SetHelpFunc(func(cmd *cobra.Command, s []string) {
|
||||
if cmd.HasInheritedFlags() {
|
||||
cmd.InheritedFlags().VisitAll(func(f *pflag.Flag) {
|
||||
if f.Name != "logLevel" {
|
||||
f.Hidden = true
|
||||
}
|
||||
})
|
||||
}
|
||||
help(cmd, s)
|
||||
})
|
||||
|
||||
mesosMasterCmd.Flags().String("zkPath", "/mesos", "Zookeeper node path to get mesos master nodes/leader")
|
||||
mesosCmd.AddCommand(mesosMasterCmd)
|
||||
|
||||
// Hijack help function to hide unnecessary global flags
|
||||
mesosMasterCmd.SetHelpFunc(func(cmd *cobra.Command, s []string) {
|
||||
if cmd.HasInheritedFlags() {
|
||||
cmd.InheritedFlags().VisitAll(func(f *pflag.Flag) {
|
||||
if f.Name != "logLevel" {
|
||||
f.Hidden = true
|
||||
}
|
||||
})
|
||||
}
|
||||
help(cmd, s)
|
||||
})
|
||||
|
||||
// Fetch jobs
|
||||
fetchJobsCmd.Flags().StringVarP(role, "role", "r", "", "Aurora Role")
|
||||
fetchCmd.AddCommand(fetchJobsCmd)
|
||||
|
||||
// Fetch Status
|
||||
fetchCmd.AddCommand(fetchStatusCmd)
|
||||
|
||||
// fetch quota
|
||||
fetchCmd.AddCommand(fetchQuotaCmd)
|
||||
|
||||
// fetch capacity
|
||||
fetchCmd.AddCommand(fetchAvailCapacityCmd)
|
||||
|
||||
// Hijack help function to hide unnecessary global flags
|
||||
fetchAvailCapacityCmd.SetHelpFunc(func(cmd *cobra.Command, s []string) {
|
||||
if cmd.HasInheritedFlags() {
|
||||
cmd.InheritedFlags().VisitAll(func(f *pflag.Flag) {
|
||||
if f.Name != "logLevel" {
|
||||
f.Hidden = true
|
||||
}
|
||||
})
|
||||
}
|
||||
help(cmd, s)
|
||||
})
|
||||
|
||||
// fetch tasks with status
|
||||
fetchCmd.AddCommand(fetchTasksWithStatusCmd)
|
||||
|
||||
fetchTasksWithStatusCmd.Flags().StringVarP(taskStatus, "status", "x", "", "Task Status")
|
||||
fetchTasksWithStatusCmd.MarkFlagRequired("status")
|
||||
fetchTasksWithStatusCmd.Flags().StringVarP(env, "environment", "e", "", "Aurora Environment")
|
||||
fetchTasksWithStatusCmd.Flags().StringVarP(role, "role", "r", "", "Aurora Role")
|
||||
fetchTasksWithStatusCmd.Flags().StringVarP(name, "name", "n", "", "Aurora Name")
|
||||
|
||||
// Hijack help function to hide unnecessary global flags
|
||||
fetchTasksWithStatusCmd.SetHelpFunc(func(cmd *cobra.Command, s []string) {
|
||||
if cmd.HasInheritedFlags() {
|
||||
cmd.InheritedFlags().VisitAll(func(f *pflag.Flag) {
|
||||
if f.Name != "logLevel" {
|
||||
f.Hidden = true
|
||||
}
|
||||
})
|
||||
}
|
||||
help(cmd, s)
|
||||
})
|
||||
}
|
||||
|
||||
var fetchCmd = &cobra.Command{
|
||||
|
@ -95,8 +202,8 @@ var taskStatusCmd = &cobra.Command{
|
|||
|
||||
var leaderCmd = &cobra.Command{
|
||||
Use: "leader [zkNode0, zkNode1, ...zkNodeN]",
|
||||
PersistentPreRun: func(cmd *cobra.Command, args []string) {}, //We don't need a realis client for this cmd
|
||||
PersistentPostRun: func(cmd *cobra.Command, args []string) {}, //We don't need a realis client for this cmd
|
||||
PersistentPreRun: func(cmd *cobra.Command, args []string) {}, // We don't need a realis client for this cmd
|
||||
PersistentPostRun: func(cmd *cobra.Command, args []string) {}, // We don't need a realis client for this cmd
|
||||
PreRun: setConfig,
|
||||
Args: cobra.MinimumNArgs(1),
|
||||
Short: "Fetch current Aurora leader given Zookeeper nodes. ",
|
||||
|
@ -105,6 +212,48 @@ Pass Zookeeper nodes separated by a space as an argument to this command.`,
|
|||
Run: fetchLeader,
|
||||
}
|
||||
|
||||
var masterCmd = &cobra.Command{
|
||||
Use: "master [zkNode0 zkNode1 ...zkNodeN]",
|
||||
PersistentPreRun: func(cmd *cobra.Command, args []string) {}, // We don't need a realis client for this cmd
|
||||
PersistentPostRun: func(cmd *cobra.Command, args []string) {}, // We don't need a realis client for this cmd
|
||||
PreRun: setConfig,
|
||||
Args: cobra.MinimumNArgs(1),
|
||||
Short: "Fetch current Aurora master nodes/leader given Zookeeper nodes. ",
|
||||
Long: `Gets the current aurora master nodes/leader using information from Zookeeper path.
|
||||
Pass Zookeeper nodes separated by a space as an argument to this command.`,
|
||||
Run: fetchMaster,
|
||||
}
|
||||
|
||||
var mesosCmd = &cobra.Command{
|
||||
Use: "mesos",
|
||||
PreRun: setConfig,
|
||||
Short: "Fetch information from Mesos.",
|
||||
}
|
||||
|
||||
var mesosLeaderCmd = &cobra.Command{
|
||||
Use: "leader [zkNode0, zkNode1, ...zkNodeN]",
|
||||
PersistentPreRun: func(cmd *cobra.Command, args []string) {}, // We don't need a realis client for this cmd
|
||||
PersistentPostRun: func(cmd *cobra.Command, args []string) {}, // We don't need a realis client for this cmd
|
||||
PreRun: setConfig,
|
||||
Short: "Fetch current Mesos-master leader given Zookeeper nodes.",
|
||||
Long: `Gets the current leading Mesos-master instance using information from Zookeeper path.
|
||||
Pass Zookeeper nodes separated by a space as an argument to this command. If no nodes are provided,
|
||||
it fetches leader from local Mesos agent or Zookeeper`,
|
||||
Run: fetchMesosLeader,
|
||||
}
|
||||
|
||||
var mesosMasterCmd = &cobra.Command{
|
||||
Use: "master [zkNode0 zkNode1 ...zkNodeN]",
|
||||
PersistentPreRun: func(cmd *cobra.Command, args []string) {}, // We don't need a realis client for this cmd
|
||||
PersistentPostRun: func(cmd *cobra.Command, args []string) {}, // We don't need a realis client for this cmd
|
||||
PreRun: setConfig,
|
||||
Short: "Fetch current Mesos-master nodes/leader given Zookeeper nodes.",
|
||||
Long: `Gets the current Mesos-master instances using information from Zookeeper path.
|
||||
Pass Zookeeper nodes separated by a space as an argument to this command. If no nodes are provided,
|
||||
it fetches Mesos-master nodes/leader from local Mesos agent or Zookeeper`,
|
||||
Run: fetchMesosMaster,
|
||||
}
|
||||
|
||||
var fetchJobsCmd = &cobra.Command{
|
||||
Use: "jobs",
|
||||
Short: "Fetch a list of task Aurora running under a role.",
|
||||
|
@ -119,6 +268,28 @@ var fetchStatusCmd = &cobra.Command{
|
|||
Run: fetchHostStatus,
|
||||
}
|
||||
|
||||
var fetchQuotaCmd = &cobra.Command{
|
||||
Use: "quota",
|
||||
Short: "Fetch the quotas of given roles",
|
||||
Long: `This command will print list of resource quotas with the aggregated resources for the given roles`,
|
||||
Run: fetchQuota,
|
||||
}
|
||||
|
||||
var fetchAvailCapacityCmd = &cobra.Command{
|
||||
Use: "capacity",
|
||||
PreRun: setConfig,
|
||||
Short: "Fetch capacity report",
|
||||
Long: `This command will show detailed capacity report of the cluster`,
|
||||
Run: fetchAvailCapacity,
|
||||
}
|
||||
|
||||
var fetchTasksWithStatusCmd = &cobra.Command{
|
||||
Use: "tasks",
|
||||
Short: "Fetch tasks with status",
|
||||
Long: `This command will return the list of tasks with a given status`,
|
||||
Run: fetchTasksWithStatus,
|
||||
}
|
||||
|
||||
func fetchTasksConfig(cmd *cobra.Command, args []string) {
|
||||
log.Infof("Fetching job configuration for [%s/%s/%s] \n", *env, *role, *name)
|
||||
|
||||
|
@ -138,11 +309,11 @@ func fetchTasksConfig(cmd *cobra.Command, args []string) {
|
|||
|
||||
tasks, err := client.GetTasksWithoutConfigs(taskQuery)
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v\n", err)
|
||||
log.Fatalf("error: %+v", err)
|
||||
}
|
||||
|
||||
if toJson {
|
||||
fmt.Println(toJSON(tasks))
|
||||
fmt.Println(internal.ToJSON(tasks))
|
||||
} else {
|
||||
for _, t := range tasks {
|
||||
fmt.Println(t)
|
||||
|
@ -164,7 +335,7 @@ func fetchTasksStatus(cmd *cobra.Command, args []string) {
|
|||
if *role == "" {
|
||||
role = nil
|
||||
}
|
||||
//TODO: Add filtering down by status
|
||||
// TODO(rdelvalle): Add filtering down by status
|
||||
taskQuery := &aurora.TaskQuery{
|
||||
Environment: env,
|
||||
Role: role,
|
||||
|
@ -173,11 +344,11 @@ func fetchTasksStatus(cmd *cobra.Command, args []string) {
|
|||
|
||||
tasks, err := client.GetTaskStatus(taskQuery)
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v\n", err)
|
||||
log.Fatalf("error: %+v", err)
|
||||
}
|
||||
|
||||
if toJson {
|
||||
fmt.Println(toJSON(tasks))
|
||||
fmt.Println(internal.ToJSON(tasks))
|
||||
} else {
|
||||
for _, t := range tasks {
|
||||
fmt.Println(t)
|
||||
|
@ -193,7 +364,7 @@ func fetchHostStatus(cmd *cobra.Command, args []string) {
|
|||
}
|
||||
|
||||
if toJson {
|
||||
fmt.Println(toJSON(result.Statuses))
|
||||
fmt.Println(internal.ToJSON(result.Statuses))
|
||||
} else {
|
||||
for _, k := range result.GetStatuses() {
|
||||
fmt.Printf("Result: %s:%s\n", k.Host, k.Mode)
|
||||
|
@ -217,6 +388,135 @@ func fetchLeader(cmd *cobra.Command, args []string) {
|
|||
fmt.Println(url)
|
||||
}
|
||||
|
||||
func fetchMesosLeader(cmd *cobra.Command, args []string) {
|
||||
if len(args) < 1 {
|
||||
mesosAgentFlags, err := fetchMasterFromAgent(localAgentStateURL)
|
||||
if err != nil || mesosAgentFlags.Master == "" {
|
||||
log.Debugf("unable to fetch Mesos leader via local Mesos agent: %v", err)
|
||||
args = append(args, "localhost")
|
||||
} else if mesosAgentFlags.hasMaster {
|
||||
fmt.Println(mesosAgentFlags.Master)
|
||||
return
|
||||
} else {
|
||||
args = append(args, strings.Split(mesosAgentFlags.Master, ",")...)
|
||||
}
|
||||
}
|
||||
log.Infof("Fetching Mesos-master leader from Zookeeper node(s): %v \n", args)
|
||||
|
||||
url, err := realis.MesosFromZKOpts(realis.ZKEndpoints(args...), realis.ZKPath(cmd.Flag("zkPath").Value.String()))
|
||||
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v\n", err)
|
||||
}
|
||||
|
||||
fmt.Println(url)
|
||||
}
|
||||
|
||||
func fetchMaster(cmd *cobra.Command, args []string) {
|
||||
log.Infof("Fetching master nodes from %v \n", args)
|
||||
|
||||
if len(args) < 1 {
|
||||
log.Fatalln("At least one Zookeeper node address must be passed in.")
|
||||
}
|
||||
|
||||
masterMap, err := realis.MasterNodesFromZKOpts(realis.ZKEndpoints(args...), realis.ZKPath(cmd.Flag("zkPath").Value.String()))
|
||||
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v\n", err)
|
||||
}
|
||||
|
||||
if toJson {
|
||||
fmt.Println(internal.ToJSON(masterMap))
|
||||
} else {
|
||||
for key, masterNodes := range masterMap {
|
||||
for _, masterNode := range masterNodes {
|
||||
fmt.Println(key + "=" + masterNode)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func fetchMesosMaster(cmd *cobra.Command, args []string) {
|
||||
if len(args) < 1 {
|
||||
mesosAgentFlags, err := fetchMasterFromAgent(localAgentStateURL)
|
||||
if err != nil || mesosAgentFlags.Master == "" {
|
||||
log.Debugf("unable to fetch Mesos master nodes via local Mesos agent: %v", err)
|
||||
args = append(args, "localhost")
|
||||
} else {
|
||||
args = append(args, strings.Split(mesosAgentFlags.Master, ",")...)
|
||||
}
|
||||
}
|
||||
log.Infof("Fetching Mesos-master nodes from Zookeeper node(s): %v \n", args)
|
||||
|
||||
mesosMasterMap, err := realis.MesosMasterNodesFromZKOpts(realis.ZKEndpoints(args...), realis.ZKPath(cmd.Flag("zkPath").Value.String()))
|
||||
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v\n", err)
|
||||
}
|
||||
if toJson {
|
||||
fmt.Println(internal.ToJSON(mesosMasterMap))
|
||||
} else {
|
||||
for key, mesosMasterNodes := range mesosMasterMap {
|
||||
for _, mesosMasterNode := range mesosMasterNodes {
|
||||
fmt.Println(key + "=" + mesosMasterNode)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func fetchMasterFromAgent(url string) (mesosAgentFlags mesosAgentFlags, err error) {
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if resp.StatusCode != 200 {
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
state := &mesosAgentState{}
|
||||
err = json.NewDecoder(resp.Body).Decode(state)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
mesosAgentFlags = state.Flags
|
||||
err = updateMasterFlag(&mesosAgentFlags)
|
||||
return
|
||||
}
|
||||
|
||||
/*
|
||||
Master flag can be passed as one of :
|
||||
host:port
|
||||
zk://host1:port1,host2:port2,.../path
|
||||
zk://username:password@host1:port1,host2:port2,.../path
|
||||
file:///path/to/file
|
||||
This function takes care of all the above cases and updates flags with parsed values
|
||||
*/
|
||||
func updateMasterFlag(flags *mesosAgentFlags) error {
|
||||
zkPathPrefix := "zk://"
|
||||
filePathPrefix := "file://"
|
||||
if strings.HasPrefix(flags.Master, zkPathPrefix) {
|
||||
beginIndex := len(zkPathPrefix)
|
||||
if strings.Contains(flags.Master, "@") {
|
||||
beginIndex = strings.Index(flags.Master, "@") + 1
|
||||
}
|
||||
flags.Master = flags.Master[beginIndex:strings.LastIndex(flags.Master, "/")]
|
||||
} else if strings.HasPrefix(flags.Master, filePathPrefix) {
|
||||
content, err := ioutil.ReadFile(flags.Master)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if strings.Contains(string(content), filePathPrefix) {
|
||||
return errors.New("invalid master file content")
|
||||
}
|
||||
flags.Master = string(content)
|
||||
return updateMasterFlag(flags)
|
||||
} else {
|
||||
flags.hasMaster = true
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// TODO: Expand this to be able to filter by job name and environment.
|
||||
func fetchJobs(cmd *cobra.Command, args []string) {
|
||||
log.Infof("Fetching tasks under role: %s \n", *role)
|
||||
|
@ -233,7 +533,7 @@ func fetchJobs(cmd *cobra.Command, args []string) {
|
|||
result, err := client.GetJobs(*role)
|
||||
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v\n", err)
|
||||
log.Fatalf("error: %+v", err)
|
||||
}
|
||||
|
||||
if toJson {
|
||||
|
@ -243,10 +543,143 @@ func fetchJobs(cmd *cobra.Command, args []string) {
|
|||
configSlice = append(configSlice, config)
|
||||
}
|
||||
|
||||
fmt.Println(toJSON(configSlice))
|
||||
fmt.Println(internal.ToJSON(configSlice))
|
||||
} else {
|
||||
for jobConfig := range result.GetConfigs() {
|
||||
fmt.Println(jobConfig)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//fetchQuota gets quotas for roles in args
|
||||
func fetchQuota(cmd *cobra.Command, args []string) {
|
||||
for _, role := range args {
|
||||
log.Infof("Fetching quota for role: %s \n", role)
|
||||
result, err := client.GetQuota(role)
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v\n", err)
|
||||
}
|
||||
|
||||
if toJson {
|
||||
fmt.Println(internal.ToJSON(result))
|
||||
} else {
|
||||
fmt.Printf(" Quota: %v\n", internal.ToJSON(result.Quota.GetResources()))
|
||||
fmt.Printf(" Aggregated Resources: \n")
|
||||
fmt.Printf(" ProdSharedConsumption: %v\n", internal.ToJSON(result.ProdSharedConsumption.GetResources()))
|
||||
fmt.Printf(" NonProdSharedConsumption: %v\n",
|
||||
internal.ToJSON(result.NonProdSharedConsumption.GetResources()))
|
||||
fmt.Printf(" ProdDedicatedConsumption: %v\n",
|
||||
internal.ToJSON(result.ProdDedicatedConsumption.GetResources()))
|
||||
fmt.Printf(" NonProdDedicatedConsumption: %v\n",
|
||||
internal.ToJSON(result.NonProdDedicatedConsumption.GetResources()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//fetchAvailCapacity reports free capacity in details
|
||||
func fetchAvailCapacity(cmd *cobra.Command, args []string) {
|
||||
log.Infof("Fetching available capacity from %s/offers\n", client.GetSchedulerURL())
|
||||
|
||||
report, err := client.AvailOfferReport()
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v\n", err)
|
||||
}
|
||||
|
||||
// convert report to user-friendly structure
|
||||
capacity := map[string]map[string]map[string]int64{}
|
||||
for g, gv := range report {
|
||||
if _, ok := capacity[g]; !ok {
|
||||
capacity[g] = map[string]map[string]int64{}
|
||||
}
|
||||
|
||||
for r, rc := range gv {
|
||||
if _, ok := capacity[g][r]; !ok {
|
||||
capacity[g][r] = map[string]int64{}
|
||||
}
|
||||
|
||||
for v, c := range rc {
|
||||
capacity[g][r][fmt.Sprint(v)] = c
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if toJson {
|
||||
fmt.Println(internal.ToJSON(capacity))
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v\n", err)
|
||||
}
|
||||
} else {
|
||||
fmt.Println(capacity)
|
||||
}
|
||||
}
|
||||
|
||||
//fetchTasksWithStatus returns lists of tasks for a given set of status
|
||||
func fetchTasksWithStatus(cmd *cobra.Command, args []string) {
|
||||
status := *taskStatus
|
||||
|
||||
log.Infof("Fetching tasks for role/environment/job:[%s/%s/%s] \n", *role, *env, *name)
|
||||
log.Infof("Fetching tasks for a given status: %v \n", status)
|
||||
|
||||
// This Query takes nil for values it shouldn't need to match against.
|
||||
// This allows us to potentially avoid expensive calls for specific environments, roles, or job names.
|
||||
if *env == "" {
|
||||
env = nil
|
||||
}
|
||||
if *role == "" {
|
||||
role = nil
|
||||
}
|
||||
if *name == "" {
|
||||
name = nil
|
||||
}
|
||||
// role needs to be specified if env is specified
|
||||
if env != nil {
|
||||
if role == nil {
|
||||
log.Fatalln("Role must be specified when env is specified.")
|
||||
}
|
||||
}
|
||||
// role or env needs to be specified if name is specified
|
||||
if name != nil {
|
||||
if role == nil && env == nil {
|
||||
log.Fatalln("Role or env must be specified when name is specified.")
|
||||
}
|
||||
}
|
||||
|
||||
queryStatuses, err := scheduleStatusFromString(status)
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v", err)
|
||||
}
|
||||
|
||||
taskQuery := &aurora.TaskQuery{Environment: env, Role: role, JobName: name, Statuses: queryStatuses}
|
||||
|
||||
tasks, err := client.GetTasksWithoutConfigs(taskQuery)
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v", err)
|
||||
}
|
||||
|
||||
if toJson {
|
||||
taskStatus := strings.ToUpper(status)
|
||||
// convert task lists to a list of task id like role-env-name-[instance-id]
|
||||
taskIdsMap := map[string][]string{}
|
||||
var taskIds []string
|
||||
for _, task := range tasks {
|
||||
taskIds = append(taskIds, task.AssignedTask.TaskId)
|
||||
}
|
||||
taskIdsMap[taskStatus] = taskIds
|
||||
fmt.Println(internal.ToJSON(taskIdsMap))
|
||||
} else {
|
||||
fmt.Printf("Tasks for status %s:\n", strings.ToUpper(status))
|
||||
for _, t := range tasks {
|
||||
fmt.Println(t.AssignedTask.TaskId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Convert status slice into ScheduleStatus slice
|
||||
func scheduleStatusFromString(status string) ([]aurora.ScheduleStatus, error) {
|
||||
scheduleStatus, err := aurora.ScheduleStatusFromString(strings.ToUpper(status))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result := []aurora.ScheduleStatus{scheduleStatus}
|
||||
return result, nil
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ func backup(cmd *cobra.Command, args []string) {
|
|||
fmt.Println("Forcing scheduler to write a Backup of latest Snapshot to file system")
|
||||
err := client.PerformBackup()
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v\n", err)
|
||||
log.Fatalf("error: %+v", err)
|
||||
} else {
|
||||
log.Println("Backup started successfully")
|
||||
}
|
||||
|
@ -112,7 +112,7 @@ func explicitRecon(cmd *cobra.Command, args []string) {
|
|||
// Get batch size from args and convert it to the right format
|
||||
batchInt, err := strconv.Atoi(args[0])
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v\n", err)
|
||||
log.Fatalf("error: %v", err)
|
||||
}
|
||||
|
||||
batchInt32 := int32(batchInt)
|
||||
|
@ -123,7 +123,7 @@ func explicitRecon(cmd *cobra.Command, args []string) {
|
|||
|
||||
err := client.ForceExplicitTaskReconciliation(batchSize)
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v\n", err.Error())
|
||||
log.Fatalf("error: %v", err)
|
||||
} else {
|
||||
fmt.Println("Explicit reconciliation started successfully")
|
||||
}
|
||||
|
@ -142,7 +142,7 @@ func implicitRecon(cmd *cobra.Command, args []string) {
|
|||
log.Println("Forcing scheduler to perform an implicit reconciliation with Mesos")
|
||||
err := client.ForceImplicitTaskReconciliation()
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v\n", err)
|
||||
log.Fatalf("error: %+v", err)
|
||||
} else {
|
||||
fmt.Println("Implicit reconciliation started successfully")
|
||||
}
|
||||
|
|
81
cmd/kill.go
81
cmd/kill.go
|
@ -15,6 +15,9 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
realis "github.com/aurora-scheduler/gorealis/v2"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
@ -26,13 +29,26 @@ func init() {
|
|||
|
||||
// Kill Job
|
||||
killCmd.AddCommand(killJobCmd)
|
||||
killCmd.AddCommand(killTasksCmd)
|
||||
|
||||
killJobCmd.Flags().StringVarP(env, "environment", "e", "", "Aurora Environment")
|
||||
killJobCmd.Flags().StringVarP(role, "role", "r", "", "Aurora Role")
|
||||
killJobCmd.Flags().StringVarP(name, "name", "n", "", "Aurora Name")
|
||||
killJobCmd.Flags().BoolVarP(&monitor, "monitor", "m", true, "monitor the result after sending the command")
|
||||
killJobCmd.MarkFlagRequired("environment")
|
||||
killJobCmd.MarkFlagRequired("role")
|
||||
killJobCmd.MarkFlagRequired("name")
|
||||
|
||||
//Set flags for killTask sub-command
|
||||
killTasksCmd.Flags().StringVarP(env, "environment", "e", "", "Aurora Environment")
|
||||
killTasksCmd.Flags().StringVarP(role, "role", "r", "", "Aurora Role")
|
||||
killTasksCmd.Flags().StringVarP(name, "name", "n", "", "Aurora Name")
|
||||
killTasksCmd.Flags().StringVarP(instances, "instances", "I", "", "Instances e.g. 1, 2, 5")
|
||||
killTasksCmd.Flags().BoolVarP(&monitor, "monitor", "m", true, "monitor the result after sending the command")
|
||||
killTasksCmd.MarkFlagRequired("environment")
|
||||
killTasksCmd.MarkFlagRequired("role")
|
||||
killTasksCmd.MarkFlagRequired("name")
|
||||
killTasksCmd.MarkFlagRequired("instances")
|
||||
}
|
||||
|
||||
var killCmd = &cobra.Command{
|
||||
|
@ -46,6 +62,24 @@ var killJobCmd = &cobra.Command{
|
|||
Run: killJob,
|
||||
}
|
||||
|
||||
/*
|
||||
* The killTasks command allows the user to kill a specific task of a job.
|
||||
* The command also allows the user to kill multiple tasks of the same job. To do so the user needs to pass a list of instance numbers as comma separated values.
|
||||
* Pass the instance number of the job to be killed after the --instances or -I flag
|
||||
* Please note that all the instances passed must belong to the same job.
|
||||
*
|
||||
* example : australis kill tasks -e "environment" -r "role" -n "job_name" -I "1"
|
||||
* The above example kills instance number 1.
|
||||
*
|
||||
* example 2 : australis kill tasks -e "environment" -r "role" -n "job_name" -I "1, 5, 9"
|
||||
* The above example kills tasks 1, 5 and 9, which are part of the same job
|
||||
*/
|
||||
var killTasksCmd = &cobra.Command{
|
||||
Use: "tasks",
|
||||
Short: "Kill Aurora Tasks",
|
||||
Run: killTasks,
|
||||
}
|
||||
|
||||
func killJob(cmd *cobra.Command, args []string) {
|
||||
log.Infof("Killing job [Env:%s Role:%s Name:%s]\n", *env, *role, *name)
|
||||
|
||||
|
@ -57,8 +91,49 @@ func killJob(cmd *cobra.Command, args []string) {
|
|||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
if ok, err := client.MonitorInstances(job.JobKey(), 0, 5, 50); !ok || err != nil {
|
||||
log.Fatalln("Unable to kill all instances of job")
|
||||
if monitor {
|
||||
if ok, err := client.MonitorInstances(job.JobKey(), 0, 5, 50); !ok || err != nil {
|
||||
log.Fatalln("Unable to kill all instances of job")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func killTasks(cmd *cobra.Command, args []string) {
|
||||
log.Infof("Killing task [Env:%s Role:%s Name:%s Instance:%s]\n", *env, *role, *name, *instances)
|
||||
|
||||
//Set jobKey for the tasks to be killed.
|
||||
task := realis.NewTask().
|
||||
Environment(*env).
|
||||
Role(*role).
|
||||
Name(*name)
|
||||
|
||||
/*
|
||||
* In the following block, we convert instance numbers, which were passed as strings, to integer values
|
||||
* After converting them to integers, we add them to a slice of type int32.
|
||||
*/
|
||||
|
||||
splitString := strings.Split(*instances, ",")
|
||||
instanceList := make([]int32, len(splitString))
|
||||
|
||||
for i := range instanceList {
|
||||
splitString[i] = strings.TrimSpace(splitString[i])
|
||||
instanceNumber, intErr := strconv.Atoi(splitString[i])
|
||||
if intErr != nil {
|
||||
log.Fatalln("Instance passed should be a number. Error: " + intErr.Error())
|
||||
return
|
||||
} else {
|
||||
instanceList[i] = int32(instanceNumber)
|
||||
}
|
||||
}
|
||||
|
||||
//Call the killtasks function, passing the instanceList as the list of instances to be killed.
|
||||
if _, err := client.KillInstances(task.JobKey(), instanceList...); err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
if monitor {
|
||||
if ok, err := client.MonitorInstances(task.JobKey(), 0, 5, 50); !ok || err != nil {
|
||||
log.Fatalln("Unable to kill the given task")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/aurora-scheduler/australis/internal"
|
||||
"github.com/aurora-scheduler/gorealis/v2/gen-go/apache/aurora"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
@ -25,12 +26,12 @@ import (
|
|||
func init() {
|
||||
rootCmd.AddCommand(monitorCmd)
|
||||
|
||||
monitorCmd.AddCommand(monitorHostCmd.cmd)
|
||||
monitorCmd.AddCommand(monitorHostCmd.Cmd)
|
||||
|
||||
monitorHostCmd.cmd.Run = monitorHost
|
||||
monitorHostCmd.cmd.Flags().DurationVar(&monitorHostCmd.monitorInterval, "interval", time.Second*5, "Interval at which to poll scheduler.")
|
||||
monitorHostCmd.cmd.Flags().DurationVar(&monitorHostCmd.monitorTimeout, "timeout", time.Minute*10, "Time after which the monitor will stop polling and throw an error.")
|
||||
monitorHostCmd.cmd.Flags().StringSliceVar(&monitorHostCmd.statusList, "statuses", []string{aurora.MaintenanceMode_DRAINED.String()}, "List of acceptable statuses for a host to be in. (case-insensitive) [NONE, SCHEDULED, DRAINED, DRAINING]")
|
||||
monitorHostCmd.Cmd.Run = monitorHost
|
||||
monitorHostCmd.Cmd.Flags().DurationVar(&monitorHostCmd.MonitorInterval, "interval", time.Second*5, "Interval at which to poll scheduler.")
|
||||
monitorHostCmd.Cmd.Flags().DurationVar(&monitorHostCmd.MonitorTimeout, "timeout", time.Minute*10, "Time after which the monitor will stop polling and throw an error.")
|
||||
monitorHostCmd.Cmd.Flags().StringSliceVar(&monitorHostCmd.StatusList, "statuses", []string{aurora.MaintenanceMode_DRAINED.String()}, "List of acceptable statuses for a host to be in. (case-insensitive) [NONE, SCHEDULED, DRAINED, DRAINING]")
|
||||
}
|
||||
|
||||
var monitorCmd = &cobra.Command{
|
||||
|
@ -38,20 +39,20 @@ var monitorCmd = &cobra.Command{
|
|||
Short: "Watch for a specific state change",
|
||||
}
|
||||
|
||||
var monitorHostCmd = monitorCmdConfig{
|
||||
cmd: &cobra.Command{
|
||||
var monitorHostCmd = internal.MonitorCmdConfig{
|
||||
Cmd: &cobra.Command{
|
||||
Use: "hosts",
|
||||
Short: "Watch a host maintenance status until it enters one of the desired statuses.",
|
||||
Long: `Provide a list of hosts to monitor for desired statuses. Statuses may be passed using the --statuses
|
||||
flag with a list of comma separated statuses. Statuses include [NONE, SCHEDULED, DRAINED, DRAINING]`,
|
||||
},
|
||||
statusList: make([]string, 0),
|
||||
StatusList: make([]string, 0),
|
||||
}
|
||||
|
||||
func monitorHost(cmd *cobra.Command, args []string) {
|
||||
maintenanceModes := make([]aurora.MaintenanceMode, 0)
|
||||
|
||||
for _, status := range monitorHostCmd.statusList {
|
||||
for _, status := range monitorHostCmd.StatusList {
|
||||
mode, err := aurora.MaintenanceModeFromString(strings.ToUpper(status))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
|
@ -60,10 +61,10 @@ func monitorHost(cmd *cobra.Command, args []string) {
|
|||
maintenanceModes = append(maintenanceModes, mode)
|
||||
}
|
||||
|
||||
log.Infof("Monitoring for %v at %v intervals", monitorHostCmd.monitorTimeout, monitorHostCmd.monitorInterval)
|
||||
hostResult, err := client.MonitorHostMaintenance(args, maintenanceModes, monitorHostCmd.monitorInterval, monitorHostCmd.monitorTimeout)
|
||||
log.Infof("Monitoring for %v at %v intervals", monitorHostCmd.MonitorTimeout, monitorHostCmd.MonitorInterval)
|
||||
hostResult, err := client.MonitorHostMaintenance(args, maintenanceModes, monitorHostCmd.MonitorInterval, monitorHostCmd.MonitorTimeout)
|
||||
|
||||
maintenanceMonitorPrint(hostResult, maintenanceModes)
|
||||
internal.MaintenanceMonitorPrint(hostResult, maintenanceModes, toJson)
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
|
|
|
@ -15,34 +15,96 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"github.com/aurora-scheduler/gorealis/v2/gen-go/apache/aurora"
|
||||
"github.com/spf13/cobra"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
realis "github.com/aurora-scheduler/gorealis/v2"
|
||||
|
||||
"github.com/aurora-scheduler/gorealis/v2/gen-go/apache/aurora"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(restartCmd)
|
||||
rootCmd.AddCommand(restartCmd)
|
||||
|
||||
restartCmd.AddCommand(restartJobCmd)
|
||||
restartJobCmd.Flags().StringVarP(env, "environment", "e", "", "Aurora Environment")
|
||||
restartJobCmd.Flags().StringVarP(role, "role", "r", "", "Aurora Role")
|
||||
restartJobCmd.Flags().StringVarP(name, "name", "n", "", "Aurora Name")
|
||||
|
||||
restartCmd.AddCommand(restartJobCmd)
|
||||
restartJobCmd.Flags().StringVarP(env, "environment", "e", "", "Aurora Environment")
|
||||
restartJobCmd.Flags().StringVarP(role, "role", "r", "", "Aurora Role")
|
||||
restartJobCmd.Flags().StringVarP(name, "name", "n", "", "Aurora Name")
|
||||
restartCmd.AddCommand(restartTasksCmd)
|
||||
restartTasksCmd.Flags().StringVarP(env, "environment", "e", "", "Aurora Environment")
|
||||
restartTasksCmd.Flags().StringVarP(role, "role", "r", "", "Aurora Role")
|
||||
restartTasksCmd.Flags().StringVarP(name, "name", "n", "", "Aurora Name")
|
||||
restartTasksCmd.Flags().StringVarP(instances, "instances", "I", "", "Instances e.g. 1, 2, 5")
|
||||
restartTasksCmd.Flags().BoolVarP(&monitor, "monitor", "m", true, "monitor the result after sending the command")
|
||||
restartTasksCmd.MarkFlagRequired("environment")
|
||||
restartTasksCmd.MarkFlagRequired("role")
|
||||
restartTasksCmd.MarkFlagRequired("name")
|
||||
restartTasksCmd.MarkFlagRequired("instances")
|
||||
}
|
||||
|
||||
var restartCmd = &cobra.Command{
|
||||
Use: "restart",
|
||||
Short: "Restart an Aurora Job.",
|
||||
Use: "restart",
|
||||
Short: "Restart an Aurora Job.",
|
||||
}
|
||||
|
||||
var restartJobCmd = &cobra.Command{
|
||||
Use: "job",
|
||||
Short: "Restart a Job.",
|
||||
Run: restartJob,
|
||||
Use: "job",
|
||||
Short: "Restart a Job.",
|
||||
Run: restartJob,
|
||||
}
|
||||
|
||||
var restartTasksCmd = &cobra.Command{
|
||||
Use: "tasks",
|
||||
Short: "Restart tasks for a Job.",
|
||||
Run: restartTasks,
|
||||
}
|
||||
|
||||
func restartJob(cmd *cobra.Command, args []string) {
|
||||
key := aurora.JobKey{Environment: *env, Role: *role, Name: *name}
|
||||
if err := client.RestartJob(key); err != nil {
|
||||
log.Fatal("unable to create Aurora job: ", err)
|
||||
}
|
||||
key := aurora.JobKey{Environment: *env, Role: *role, Name: *name}
|
||||
if err := client.RestartJob(key); err != nil {
|
||||
log.Fatal("unable to create Aurora job: ", err)
|
||||
}
|
||||
}
|
||||
|
||||
func restartTasks(cmd *cobra.Command, args []string) {
|
||||
log.Infof("Restarts task [Env:%s Role:%s Name:%s Instance:%s Monitor:%s]\n", *env, *role, *name, *instances, strconv.FormatBool(monitor))
|
||||
|
||||
//Set jobKey for the tasks to be killed.
|
||||
task := realis.NewTask().
|
||||
Environment(*env).
|
||||
Role(*role).
|
||||
Name(*name)
|
||||
|
||||
/*
|
||||
* In the following block, we convert instance numbers, which were passed as strings, to integer values
|
||||
* After converting them to integers, we add them to a slice of type int32.
|
||||
*/
|
||||
|
||||
splitString := strings.Split(*instances, ",")
|
||||
instanceList := make([]int32, len(splitString))
|
||||
|
||||
for i := range instanceList {
|
||||
splitString[i] = strings.TrimSpace(splitString[i])
|
||||
var instanceNumber int
|
||||
var err error
|
||||
if instanceNumber, err = strconv.Atoi(splitString[i]); err != nil {
|
||||
log.Fatalln("Instance passed should be a number. Error: " + err.Error())
|
||||
return
|
||||
}
|
||||
instanceList[i] = int32(instanceNumber)
|
||||
}
|
||||
|
||||
//Call the RestartInstances function, passing the instanceList as the list of instances to be restarted.
|
||||
if err := client.RestartInstances(task.JobKey(), instanceList...); err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
if monitor {
|
||||
if ok, err := client.MonitorInstances(task.JobKey(), int32(len(instanceList)), 5, 50); !ok || err != nil {
|
||||
log.Fatalln("Monitor failed to monitor the given task after restart. Error: " + err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
18
cmd/root.go
18
cmd/root.go
|
@ -18,6 +18,7 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/aurora-scheduler/australis/internal"
|
||||
"github.com/spf13/viper"
|
||||
|
||||
realis "github.com/aurora-scheduler/gorealis/v2"
|
||||
|
@ -28,7 +29,8 @@ import (
|
|||
|
||||
var username, password, zkAddr, schedAddr string
|
||||
var env, role, name = new(string), new(string), new(string)
|
||||
var ram, disk int64
|
||||
var dedicated string
|
||||
var ram, disk, gpu, port int64
|
||||
var cpu float64
|
||||
var client *realis.Client
|
||||
var skipCertVerification bool
|
||||
|
@ -45,9 +47,13 @@ var count int64
|
|||
var filename string
|
||||
var message = new(string)
|
||||
var updateID string
|
||||
var monitor bool
|
||||
var timeout time.Duration
|
||||
var log = logrus.New()
|
||||
var taskStatus = new(string)
|
||||
var instances = new(string)
|
||||
|
||||
const australisVer = "v0.1.1"
|
||||
const australisVer = "v1.0.5"
|
||||
|
||||
var forceDrainTimeout time.Duration
|
||||
|
||||
|
@ -65,7 +71,8 @@ func init() {
|
|||
rootCmd.PersistentFlags().BoolVarP(&skipCertVerification, "skipCertVerification", "i", false, "Skip CA certificate hostname verification.")
|
||||
rootCmd.PersistentFlags().StringVar(&configFile, "config", "/etc/aurora/australis.yml", "Config file to use.")
|
||||
rootCmd.PersistentFlags().BoolVar(&toJson, "toJSON", false, "Print output in JSON format.")
|
||||
rootCmd.PersistentFlags().StringVarP(&logLevel, "logLevel", "l", "info", "Set logging level ["+getLoggingLevels()+"].")
|
||||
rootCmd.PersistentFlags().StringVarP(&logLevel, "logLevel", "l", "info", "Set logging level ["+internal.GetLoggingLevels()+"].")
|
||||
rootCmd.PersistentFlags().DurationVarP(&timeout, "timeout", "t", 20*time.Second, "Gorealis timeout.")
|
||||
}
|
||||
|
||||
var rootCmd = &cobra.Command{
|
||||
|
@ -91,10 +98,11 @@ func setConfig(cmd *cobra.Command, args []string) {
|
|||
lvl, err := logrus.ParseLevel(logLevel)
|
||||
|
||||
if err != nil {
|
||||
log.Fatalf("Log level %v is not valid\n", logLevel)
|
||||
log.Fatalf("Log level %v is not valid", logLevel)
|
||||
}
|
||||
|
||||
log.SetLevel(lvl)
|
||||
internal.Logger(log)
|
||||
}
|
||||
|
||||
func connect(cmd *cobra.Command, args []string) {
|
||||
|
@ -139,7 +147,7 @@ func connect(cmd *cobra.Command, args []string) {
|
|||
|
||||
realisOptions := []realis.ClientOption{realis.BasicAuth(username, password),
|
||||
realis.ThriftJSON(),
|
||||
realis.Timeout(20 * time.Second),
|
||||
realis.Timeout(timeout),
|
||||
realis.BackOff(realis.Backoff{
|
||||
Steps: 2,
|
||||
Duration: 10 * time.Second,
|
||||
|
|
52
cmd/schedule.go
Normal file
52
cmd/schedule.go
Normal file
|
@ -0,0 +1,52 @@
|
|||
/**
|
||||
* 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 cmd
|
||||
|
||||
import (
|
||||
"github.com/aurora-scheduler/australis/internal"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(scheduleCmd)
|
||||
|
||||
}
|
||||
|
||||
var scheduleCmd = &cobra.Command{
|
||||
Use: "schedule",
|
||||
Short: "Schedule a cron job on Aurora scheduler",
|
||||
Run: scheduleCron,
|
||||
Args: cobra.ExactArgs(1),
|
||||
}
|
||||
|
||||
func scheduleCron(cmd *cobra.Command, args []string) {
|
||||
job, err := internal.UnmarshalJob(args[0])
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
if err := job.ValidateCron(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
auroraJob, err := job.ToRealis()
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
if err := client.ScheduleCronJob(auroraJob); err != nil {
|
||||
log.Fatal("unable to schedule job: ", err)
|
||||
}
|
||||
}
|
61
cmd/simulate.go
Normal file
61
cmd/simulate.go
Normal file
|
@ -0,0 +1,61 @@
|
|||
/**
|
||||
* 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 cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/aurora-scheduler/australis/internal"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(simulateCmd)
|
||||
|
||||
simulateCmd.AddCommand(fitCmd)
|
||||
}
|
||||
|
||||
var simulateCmd = &cobra.Command{
|
||||
Use: "simulate",
|
||||
Short: "Simulate some work based on the current cluster condition, and return the output",
|
||||
}
|
||||
|
||||
var fitCmd = &cobra.Command{
|
||||
Use: "fit",
|
||||
Short: "Compute how many tasks can we fit to a cluster",
|
||||
Run: fit,
|
||||
Args: cobra.RangeArgs(1, 2),
|
||||
}
|
||||
|
||||
func fit(cmd *cobra.Command, args []string) {
|
||||
log.Infof("Compute how many tasks can be fit in the remaining cluster capacity")
|
||||
|
||||
taskConfig, err := internal.UnmarshalTaskConfig(args[0])
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
offers, err := client.Offers()
|
||||
if err != nil {
|
||||
log.Fatal("error: %+v", err)
|
||||
}
|
||||
|
||||
numTasks, err := client.FitTasks(taskConfig, offers)
|
||||
if err != nil {
|
||||
log.Fatal("error: %+v", err)
|
||||
}
|
||||
|
||||
fmt.Println(numTasks)
|
||||
}
|
125
cmd/start.go
125
cmd/start.go
|
@ -21,6 +21,7 @@ import (
|
|||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/aurora-scheduler/australis/internal"
|
||||
"github.com/aurora-scheduler/gorealis/v2/gen-go/apache/aurora"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
@ -34,46 +35,52 @@ func init() {
|
|||
rootCmd.AddCommand(startCmd)
|
||||
|
||||
// Sub-commands
|
||||
startCmd.AddCommand(startDrainCmd.cmd)
|
||||
startDrainCmd.cmd.Run = drain
|
||||
startCmd.AddCommand(startDrainCmd.Cmd)
|
||||
startDrainCmd.Cmd.Run = drain
|
||||
|
||||
// Maintenance specific flags
|
||||
startDrainCmd.cmd.Flags().DurationVar(&startDrainCmd.monitorInterval, "interval", time.Second*5, "Interval at which to poll scheduler.")
|
||||
startDrainCmd.cmd.Flags().DurationVar(&startDrainCmd.monitorTimeout, "timeout", time.Minute*10, "Time after which the monitor will stop polling and throw an error.")
|
||||
startDrainCmd.cmd.Flags().StringVar(&fromJsonFile, jsonFileFlag, "", "JSON file to read list of agents from.")
|
||||
startDrainCmd.cmd.Flags().BoolVar(&fromJson, jsonFlag, false, "Read JSON list of agents from the STDIN.")
|
||||
startDrainCmd.Cmd.Flags().DurationVar(&startDrainCmd.MonitorInterval, "interval", time.Second*5, "Interval at which to poll scheduler.")
|
||||
startDrainCmd.Cmd.Flags().DurationVar(&startDrainCmd.MonitorTimeout, "timeout", time.Minute*10, "Time after which the monitor will stop polling and throw an error.")
|
||||
startDrainCmd.Cmd.Flags().StringVar(&fromJsonFile, jsonFileFlag, "", "JSON file to read list of agents from.")
|
||||
startDrainCmd.Cmd.Flags().BoolVar(&fromJson, jsonFlag, false, "Read JSON list of agents from the STDIN.")
|
||||
|
||||
/* SLA Aware commands */
|
||||
startCmd.AddCommand(startSLADrainCmd.cmd)
|
||||
startSLADrainCmd.cmd.Run = slaDrain
|
||||
startCmd.AddCommand(startSLADrainCmd.Cmd)
|
||||
startSLADrainCmd.Cmd.Run = slaDrain
|
||||
|
||||
// SLA Maintenance specific flags
|
||||
startSLADrainCmd.cmd.Flags().Int64Var(&count, countFlag, 5, "Instances count that should be running to meet SLA.")
|
||||
startSLADrainCmd.cmd.Flags().Float64Var(&percent, percentageFlag, 80.0, "Percentage of instances that should be running to meet SLA.")
|
||||
startSLADrainCmd.cmd.Flags().DurationVar(&duration, "duration", time.Minute*1, "Minimum time duration a task needs to be `RUNNING` to be treated as active.")
|
||||
startSLADrainCmd.cmd.Flags().DurationVar(&forceDrainTimeout, "sla-limit", time.Minute*60, "Time limit after which SLA-Aware drain sheds SLA Awareness.")
|
||||
startSLADrainCmd.cmd.Flags().DurationVar(&startSLADrainCmd.monitorInterval, "interval", time.Second*10, "Interval at which to poll scheduler.")
|
||||
startSLADrainCmd.cmd.Flags().DurationVar(&startSLADrainCmd.monitorTimeout, "timeout", time.Minute*20, "Time after which the monitor will stop polling and throw an error.")
|
||||
startSLADrainCmd.cmd.Flags().StringVar(&fromJsonFile, jsonFileFlag, "", "JSON file to read list of agents from.")
|
||||
startSLADrainCmd.cmd.Flags().BoolVar(&fromJson, jsonFlag, false, "Read JSON list of agents from the STDIN.")
|
||||
startSLADrainCmd.Cmd.Flags().Int64Var(&count, countFlag, 5, "Instances count that should be running to meet SLA.")
|
||||
startSLADrainCmd.Cmd.Flags().Float64Var(&percent, percentageFlag, 80.0, "Percentage of instances that should be running to meet SLA.")
|
||||
startSLADrainCmd.Cmd.Flags().DurationVar(&duration, "duration", time.Minute*1, "Minimum time duration a task needs to be `RUNNING` to be treated as active.")
|
||||
startSLADrainCmd.Cmd.Flags().DurationVar(&forceDrainTimeout, "sla-limit", time.Minute*60, "Time limit after which SLA-Aware drain sheds SLA Awareness.")
|
||||
startSLADrainCmd.Cmd.Flags().DurationVar(&startSLADrainCmd.MonitorInterval, "interval", time.Second*10, "Interval at which to poll scheduler.")
|
||||
startSLADrainCmd.Cmd.Flags().DurationVar(&startSLADrainCmd.MonitorTimeout, "timeout", time.Minute*20, "Time after which the monitor will stop polling and throw an error.")
|
||||
startSLADrainCmd.Cmd.Flags().StringVar(&fromJsonFile, jsonFileFlag, "", "JSON file to read list of agents from.")
|
||||
startSLADrainCmd.Cmd.Flags().BoolVar(&fromJson, jsonFlag, false, "Read JSON list of agents from the STDIN.")
|
||||
|
||||
startCmd.AddCommand(startMaintenanceCmd.cmd)
|
||||
startMaintenanceCmd.cmd.Run = maintenance
|
||||
startCmd.AddCommand(startMaintenanceCmd.Cmd)
|
||||
startMaintenanceCmd.Cmd.Run = maintenance
|
||||
|
||||
// SLA Maintenance specific flags
|
||||
startMaintenanceCmd.cmd.Flags().DurationVar(&startMaintenanceCmd.monitorInterval, "interval", time.Second*5, "Interval at which to poll scheduler.")
|
||||
startMaintenanceCmd.cmd.Flags().DurationVar(&startMaintenanceCmd.monitorTimeout, "timeout", time.Minute*10, "Time after which the monitor will stop polling and throw an error.")
|
||||
startMaintenanceCmd.cmd.Flags().StringVar(&fromJsonFile, jsonFileFlag, "", "JSON file to read list of agents from.")
|
||||
startMaintenanceCmd.cmd.Flags().BoolVar(&fromJson, jsonFlag, false, "Read JSON list of agents from the STDIN.")
|
||||
startMaintenanceCmd.Cmd.Flags().DurationVar(&startMaintenanceCmd.MonitorInterval, "interval", time.Second*5, "Interval at which to poll scheduler.")
|
||||
startMaintenanceCmd.Cmd.Flags().DurationVar(&startMaintenanceCmd.MonitorTimeout, "timeout", time.Minute*10, "Time after which the monitor will stop polling and throw an error.")
|
||||
startMaintenanceCmd.Cmd.Flags().StringVar(&fromJsonFile, jsonFileFlag, "", "JSON file to read list of agents from.")
|
||||
startMaintenanceCmd.Cmd.Flags().BoolVar(&fromJson, jsonFlag, false, "Read JSON list of agents from the STDIN.")
|
||||
|
||||
// Start update command
|
||||
startCmd.AddCommand(startUpdateCmd.Cmd)
|
||||
startUpdateCmd.Cmd.Run = update
|
||||
startUpdateCmd.Cmd.Flags().DurationVar(&startUpdateCmd.MonitorInterval, "interval", time.Second*5, "Interval at which to poll scheduler.")
|
||||
startUpdateCmd.Cmd.Flags().DurationVar(&startUpdateCmd.MonitorTimeout, "timeout", time.Minute*10, "Time after which the monitor will stop polling and throw an error.")
|
||||
}
|
||||
|
||||
var startCmd = &cobra.Command{
|
||||
Use: "start",
|
||||
Short: "Start a service, maintenance on a host (DRAIN), a snapshot, or a backup.",
|
||||
Short: "Start a service, maintenance on a host (DRAIN), a snapshot, an update, or a backup.",
|
||||
}
|
||||
|
||||
var startDrainCmd = monitorCmdConfig{
|
||||
cmd: &cobra.Command{
|
||||
var startDrainCmd = internal.MonitorCmdConfig{
|
||||
Cmd: &cobra.Command{
|
||||
Use: "drain [space separated host list or use JSON flags]",
|
||||
Short: "Place a list of space separated Mesos Agents into draining mode.",
|
||||
Long: `Adds a Mesos Agent to Aurora's Drain list. Agents in this list
|
||||
|
@ -84,8 +91,8 @@ expects a space separated list of hosts to place into maintenance mode.`,
|
|||
},
|
||||
}
|
||||
|
||||
var startSLADrainCmd = monitorCmdConfig{
|
||||
cmd: &cobra.Command{
|
||||
var startSLADrainCmd = internal.MonitorCmdConfig{
|
||||
Cmd: &cobra.Command{
|
||||
Use: "sla-drain [space separated host list or use JSON flags]",
|
||||
Short: "Place a list of space separated Mesos Agents into maintenance mode using SLA aware strategies.",
|
||||
Long: `Adds a Mesos Agent to Aurora's Drain list. Agents in this list
|
||||
|
@ -100,8 +107,8 @@ when a Job does not have a defined SLA policy.`,
|
|||
},
|
||||
}
|
||||
|
||||
var startMaintenanceCmd = monitorCmdConfig{
|
||||
cmd: &cobra.Command{
|
||||
var startMaintenanceCmd = internal.MonitorCmdConfig{
|
||||
Cmd: &cobra.Command{
|
||||
Use: "maintenance [space separated host list or use JSON flags]",
|
||||
Short: "Place a list of space separated Mesos Agents into maintenance mode.",
|
||||
Long: `Places Mesos Agent into Maintenance mode. Agents in this list
|
||||
|
@ -111,6 +118,16 @@ expects a space separated list of hosts to place into maintenance mode.`,
|
|||
},
|
||||
}
|
||||
|
||||
var startUpdateCmd = internal.MonitorCmdConfig{
|
||||
Cmd: &cobra.Command{
|
||||
Use: "update [update config]",
|
||||
Short: "Start an update on an Aurora long running service.",
|
||||
Long: `Starts the update process on an Aurora long running service. If no such service exists, the update mechanism
|
||||
will act as a deployment, creating all new instances based on the requirements in the update configuration.`,
|
||||
Args: cobra.ExactArgs(1),
|
||||
},
|
||||
}
|
||||
|
||||
func argsValidateJSONFlags(cmd *cobra.Command, args []string) error {
|
||||
if cmd.Flags().Changed(jsonFlag) && cmd.Flags().Changed(jsonFileFlag) {
|
||||
return errors.New("only json file or json stdin must be set")
|
||||
|
@ -162,15 +179,15 @@ func drain(cmd *cobra.Command, args []string) {
|
|||
|
||||
log.Debugln(result)
|
||||
|
||||
log.Infof("Monitoring for %v at %v intervals", monitorHostCmd.monitorTimeout, monitorHostCmd.monitorInterval)
|
||||
log.Infof("Monitoring for %v at %v intervals", monitorHostCmd.MonitorTimeout, monitorHostCmd.MonitorInterval)
|
||||
// Monitor change to DRAINING and DRAINED mode
|
||||
hostResult, err := client.MonitorHostMaintenance(
|
||||
hosts,
|
||||
[]aurora.MaintenanceMode{aurora.MaintenanceMode_DRAINED},
|
||||
startDrainCmd.monitorInterval,
|
||||
startDrainCmd.monitorTimeout)
|
||||
startDrainCmd.MonitorInterval,
|
||||
startDrainCmd.MonitorTimeout)
|
||||
|
||||
maintenanceMonitorPrint(hostResult, []aurora.MaintenanceMode{aurora.MaintenanceMode_DRAINED})
|
||||
internal.MaintenanceMonitorPrint(hostResult, []aurora.MaintenanceMode{aurora.MaintenanceMode_DRAINED}, toJson)
|
||||
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
|
@ -180,7 +197,7 @@ func drain(cmd *cobra.Command, args []string) {
|
|||
func slaDrainHosts(policy *aurora.SlaPolicy, interval, timeout time.Duration, hosts ...string) {
|
||||
result, err := client.SLADrainHosts(policy, int64(forceDrainTimeout.Seconds()), hosts...)
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v\n", err)
|
||||
log.Fatalf("error: %+v", err)
|
||||
}
|
||||
|
||||
log.Debugln(result)
|
||||
|
@ -193,7 +210,7 @@ func slaDrainHosts(policy *aurora.SlaPolicy, interval, timeout time.Duration, ho
|
|||
interval,
|
||||
timeout)
|
||||
|
||||
maintenanceMonitorPrint(hostResult, []aurora.MaintenanceMode{aurora.MaintenanceMode_DRAINED})
|
||||
internal.MaintenanceMonitorPrint(hostResult, []aurora.MaintenanceMode{aurora.MaintenanceMode_DRAINED}, toJson)
|
||||
|
||||
if err != nil {
|
||||
log.Fatalf("error: %+v", err)
|
||||
|
@ -213,7 +230,7 @@ func slaDrain(cmd *cobra.Command, args []string) {
|
|||
if cmd.Flags().Changed(percentageFlag) {
|
||||
log.Infoln("Setting hosts to DRAINING with the Percentage SLA policy.")
|
||||
policy.PercentageSlaPolicy = &aurora.PercentageSlaPolicy{
|
||||
Percentage: percent,
|
||||
Percentage: percent,
|
||||
DurationSecs: int64(duration.Seconds()),
|
||||
}
|
||||
}
|
||||
|
@ -224,7 +241,7 @@ func slaDrain(cmd *cobra.Command, args []string) {
|
|||
}
|
||||
|
||||
log.Infoln("Hosts affected: ", args)
|
||||
slaDrainHosts(policy, startDrainCmd.monitorInterval, startDrainCmd.monitorTimeout, hosts...)
|
||||
slaDrainHosts(policy, startDrainCmd.MonitorInterval, startDrainCmd.MonitorTimeout, hosts...)
|
||||
}
|
||||
|
||||
func maintenance(cmd *cobra.Command, args []string) {
|
||||
|
@ -239,18 +256,42 @@ func maintenance(cmd *cobra.Command, args []string) {
|
|||
|
||||
log.Debugln(result)
|
||||
|
||||
log.Infof("Monitoring for %v at %v intervals", monitorHostCmd.monitorTimeout, monitorHostCmd.monitorInterval)
|
||||
log.Infof("Monitoring for %v at %v intervals", monitorHostCmd.MonitorTimeout, monitorHostCmd.MonitorInterval)
|
||||
|
||||
// Monitor change to DRAINING and DRAINED mode
|
||||
hostResult, err := client.MonitorHostMaintenance(
|
||||
hosts,
|
||||
[]aurora.MaintenanceMode{aurora.MaintenanceMode_SCHEDULED},
|
||||
startMaintenanceCmd.monitorInterval,
|
||||
startMaintenanceCmd.monitorTimeout)
|
||||
startMaintenanceCmd.MonitorInterval,
|
||||
startMaintenanceCmd.MonitorTimeout)
|
||||
|
||||
maintenanceMonitorPrint(hostResult, []aurora.MaintenanceMode{aurora.MaintenanceMode_SCHEDULED})
|
||||
internal.MaintenanceMonitorPrint(hostResult, []aurora.MaintenanceMode{aurora.MaintenanceMode_SCHEDULED}, toJson)
|
||||
|
||||
if err != nil {
|
||||
log.Fatalln("error: %+v", err)
|
||||
log.Fatalf("error: %+v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func update(cmd *cobra.Command, args []string) {
|
||||
updateJob, err := internal.UnmarshalUpdate(args[0])
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
update, err := updateJob.ToRealis()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
result, err := client.StartJobUpdate(update, "")
|
||||
if err != nil {
|
||||
log.Fatalf("Update failed to start %v", err)
|
||||
}
|
||||
|
||||
if ok, monitorErr := client.MonitorJobUpdate(*result.GetKey(),
|
||||
startUpdateCmd.MonitorInterval,
|
||||
startUpdateCmd.MonitorTimeout); !ok || monitorErr != nil {
|
||||
log.Fatal("update did not ROLL FORWARD before monitor timed out")
|
||||
}
|
||||
|
||||
}
|
||||
|
|
23
cmd/stop.go
23
cmd/stop.go
|
@ -17,20 +17,19 @@ package cmd
|
|||
import (
|
||||
"time"
|
||||
|
||||
"github.com/aurora-scheduler/australis/internal"
|
||||
"github.com/aurora-scheduler/gorealis/v2/gen-go/apache/aurora"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var stopMaintenanceConfig = monitorCmdConfig{}
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(stopCmd)
|
||||
|
||||
// Stop subcommands
|
||||
stopCmd.AddCommand(stopMaintCmd.cmd)
|
||||
stopMaintCmd.cmd.Run = endMaintenance
|
||||
stopMaintCmd.cmd.Flags().DurationVar(&stopMaintenanceConfig.monitorInterval, "interval", time.Second*5, "Interval at which to poll scheduler.")
|
||||
stopMaintCmd.cmd.Flags().DurationVar(&stopMaintenanceConfig.monitorTimeout, "timeout", time.Minute*1, "Time after which the monitor will stop polling and throw an error.")
|
||||
stopCmd.AddCommand(stopMaintCmd.Cmd)
|
||||
stopMaintCmd.Cmd.Run = endMaintenance
|
||||
stopMaintCmd.Cmd.Flags().DurationVar(&stopMaintCmd.MonitorInterval, "interval", time.Second*5, "Interval at which to poll scheduler.")
|
||||
stopMaintCmd.Cmd.Flags().DurationVar(&stopMaintCmd.MonitorTimeout, "timeout", time.Minute*1, "Time after which the monitor will stop polling and throw an error.")
|
||||
|
||||
// Stop update
|
||||
|
||||
|
@ -46,8 +45,8 @@ var stopCmd = &cobra.Command{
|
|||
Short: "Stop a service or maintenance on a host (DRAIN).",
|
||||
}
|
||||
|
||||
var stopMaintCmd = monitorCmdConfig{
|
||||
cmd: &cobra.Command{
|
||||
var stopMaintCmd = internal.MonitorCmdConfig{
|
||||
Cmd: &cobra.Command{
|
||||
Use: "drain [space separated host list]",
|
||||
Short: "Stop maintenance on a host (move to NONE).",
|
||||
Long: `Transition a list of hosts currently in a maintenance status out of it.`,
|
||||
|
@ -75,13 +74,13 @@ func endMaintenance(cmd *cobra.Command, args []string) {
|
|||
hostResult, err := client.MonitorHostMaintenance(
|
||||
args,
|
||||
[]aurora.MaintenanceMode{aurora.MaintenanceMode_NONE},
|
||||
stopMaintenanceConfig.monitorInterval,
|
||||
stopMaintenanceConfig.monitorTimeout)
|
||||
stopMaintCmd.MonitorInterval,
|
||||
stopMaintCmd.MonitorTimeout)
|
||||
|
||||
maintenanceMonitorPrint(hostResult, []aurora.MaintenanceMode{aurora.MaintenanceMode_NONE})
|
||||
internal.MaintenanceMonitorPrint(hostResult, []aurora.MaintenanceMode{aurora.MaintenanceMode_NONE}, toJson)
|
||||
|
||||
if err != nil {
|
||||
log.Fatalln("error: %+v", err)
|
||||
log.Fatalf("error: %+v", err)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
92
cmd/util.go
92
cmd/util.go
|
@ -1,92 +0,0 @@
|
|||
/**
|
||||
* 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 cmd
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/aurora-scheduler/gorealis/v2/gen-go/apache/aurora"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
type monitorCmdConfig struct {
|
||||
cmd *cobra.Command
|
||||
monitorInterval, monitorTimeout time.Duration
|
||||
statusList []string
|
||||
}
|
||||
|
||||
func toJSON(v interface{}) string {
|
||||
|
||||
output, err := json.Marshal(v)
|
||||
|
||||
if err != nil {
|
||||
log.Fatalln("Unable to serialize Aurora response: %+v", v)
|
||||
}
|
||||
|
||||
return string(output)
|
||||
}
|
||||
|
||||
func getLoggingLevels() string {
|
||||
|
||||
var buffer bytes.Buffer
|
||||
|
||||
for _, level := range logrus.AllLevels {
|
||||
buffer.WriteString(level.String())
|
||||
buffer.WriteString(" ")
|
||||
}
|
||||
|
||||
buffer.Truncate(buffer.Len() - 1)
|
||||
|
||||
return buffer.String()
|
||||
|
||||
}
|
||||
|
||||
func maintenanceMonitorPrint(hostResult map[string]bool, desiredStates []aurora.MaintenanceMode) {
|
||||
if len(hostResult) > 0 {
|
||||
// Create anonymous struct for JSON formatting
|
||||
output := struct {
|
||||
DesiredStates []string `json:desired_states`
|
||||
Transitioned []string `json:transitioned`
|
||||
NonTransitioned []string `json:non-transitioned`
|
||||
}{
|
||||
make([]string, 0),
|
||||
make([]string, 0),
|
||||
make([]string, 0),
|
||||
}
|
||||
|
||||
for _, state := range desiredStates {
|
||||
output.DesiredStates = append(output.DesiredStates, state.String())
|
||||
}
|
||||
|
||||
for host, ok := range hostResult {
|
||||
if ok {
|
||||
output.Transitioned = append(output.Transitioned, host)
|
||||
} else {
|
||||
output.NonTransitioned = append(output.NonTransitioned, host)
|
||||
}
|
||||
}
|
||||
|
||||
if toJson {
|
||||
fmt.Println(toJSON(output))
|
||||
} else {
|
||||
fmt.Printf("Entered %v status: %v\n", output.DesiredStates, output.Transitioned)
|
||||
fmt.Printf("Did not enter %v status: %v\n", output.DesiredStates, output.NonTransitioned)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,7 +2,7 @@ FROM ubuntu:16.04
|
|||
|
||||
RUN apt-get update -y && \
|
||||
apt-get install -y build-essential devscripts dh-exec dh-make git lintian wget && \
|
||||
wget https://dl.google.com/go/go1.12.6.linux-amd64.tar.gz -O /tmp/go.tar.gz
|
||||
wget https://dl.google.com/go/go1.15.2.linux-amd64.tar.gz -O /tmp/go.tar.gz
|
||||
|
||||
RUN tar -C /usr/local -xzf /tmp/go.tar.gz
|
||||
|
||||
|
|
|
@ -2,4 +2,4 @@
|
|||
|
||||
docker build . -t australis_deb_builder
|
||||
|
||||
docker run --rm -v $HOME/go/pkg/mod:/go/pkg/mod -v $(pwd)/..:/australis australis_builder
|
||||
docker run --rm -v $HOME/go/pkg/mod:/go/pkg/mod -v $(pwd)/..:/australis australis_deb_builder
|
||||
|
|
|
@ -1,12 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Temporary fix for a go mods bug
|
||||
rm /australis/go.sum
|
||||
|
||||
# Build debian package
|
||||
cd /australis
|
||||
debuild -d -us -uc -b
|
||||
|
||||
# Move resulting packages to the dist folder
|
||||
mkdir -p /australis/dist
|
||||
mv /australis_*_amd64* /australis/dist
|
||||
mv /australis_*_amd64* /australis/dist
|
||||
|
|
49
debian/changelog
vendored
49
debian/changelog
vendored
|
@ -1,3 +1,52 @@
|
|||
australis (1.0.5) stable; urgency=medium
|
||||
|
||||
* kill tasks
|
||||
* fetch all aurora & mesos master nodes
|
||||
|
||||
-- Nhat Tan Le <maintainer@nhatle.xyz> Wed, 31 Aug 2022 15:03:24 -0700
|
||||
|
||||
australis (1.0.4) stable; urgency=medium
|
||||
|
||||
* fetch free capacity
|
||||
* simulate task fitting - compute how many tasks can be fit in the remaining capacity
|
||||
|
||||
-- Nhat Tan Le <maintainer@nhatle.xyz> Tue, 2 Aug 2022 16:19:24 -0700
|
||||
|
||||
australis (1.0.3) stable; urgency=medium
|
||||
|
||||
* Update CI to compile on PRs
|
||||
* Add tier and production in task config
|
||||
* Add fetch quota command
|
||||
* Add priority into job config
|
||||
|
||||
-- Nhat Tan Le <maintainer@nhatle.xyz> Wed, 20 Oct 2021 14:24:10 -0700
|
||||
|
||||
australis (1.0.2) stable; urgency=medium
|
||||
|
||||
* Fixing broken Thrift dependency by bumping up backported version to thrift v0.13.2
|
||||
|
||||
-- Renan Del Valle <maintainer@ridv.xyz> Mon, 11 Jan 2021 17:57:10 -0800
|
||||
|
||||
australis (1.0.1) stable; urgency=medium
|
||||
|
||||
* Added flag -m and --monitor that can be set in order to monitor a job creation or a job kill. By default monitor is set to true.
|
||||
|
||||
-- Renan Del Valle <maintainer@ridv.xyz> Wed, 30 Sep 2020 16:46:56 -0700
|
||||
|
||||
australis (1.0.0) stable; urgency=medium
|
||||
|
||||
* First stable release.
|
||||
|
||||
-- Renan Del Valle <maintainer@ridv.xyz> Wed, 30 Sep 2020 15:39:29 -0700
|
||||
|
||||
australis (0.22.0) unstable; urgency=medium
|
||||
|
||||
* Added support for starting job updates.
|
||||
* Added support for setting SlaAwareness for updates.
|
||||
* Added upport for scheduling cron jobs.
|
||||
|
||||
-- Renan Del Valle <maintainer@ridv.xyz> Thu, 07 May 2020 12:00:00 -0700
|
||||
|
||||
australis (0.1.1) unstable; urgency=medium
|
||||
|
||||
* Removed support for building with dep
|
||||
|
|
|
@ -18,6 +18,7 @@ A light-weight command line client for use with Apache Aurora built using goreal
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -25,16 +26,19 @@ A light-weight command line client for use with Apache Aurora built using goreal
|
|||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis autocomplete](australis_autocomplete.md) - Create auto completion for bash.
|
||||
* [australis create](australis_create.md) - Create an Aurora Job
|
||||
* [australis docs](australis_docs.md) - Kill an Aurora Job
|
||||
* [australis fetch](australis_fetch.md) - Fetch information from Aurora
|
||||
* [australis force](australis_force.md) - Force the scheduler to do a snapshot, a backup, or a task reconciliation.
|
||||
* [australis kill](australis_kill.md) - Kill an Aurora Job
|
||||
* [australis monitor](australis_monitor.md) - Watch for a specific state change
|
||||
* [australis rollback](australis_rollback.md) - rollback an operation such as an Update
|
||||
* [australis pulse](australis_pulse.md) - Pulse a Job update
|
||||
* [australis restart](australis_restart.md) - Restart an Aurora Job.
|
||||
* [australis resume](australis_resume.md) - Resume a Job update
|
||||
* [australis rollback](australis_rollback.md) - Rollback an operation such as an Update
|
||||
* [australis schedule](australis_schedule.md) - Schedule a cron job on Aurora scheduler
|
||||
* [australis set](australis_set.md) - Set a value in the Aurora Scheduler.
|
||||
* [australis start](australis_start.md) - Start a service, maintenance on a host (DRAIN), a snapshot, or a backup.
|
||||
* [australis simulate](australis_simulate.md) - Simulate some work based on the current cluster condition, and return the output
|
||||
* [australis start](australis_start.md) - Start a service, maintenance on a host (DRAIN), a snapshot, an update, or a backup.
|
||||
* [australis stop](australis_stop.md) - Stop a service or maintenance on a host (DRAIN).
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -13,7 +13,8 @@ australis create [flags]
|
|||
### Options
|
||||
|
||||
```
|
||||
-h, --help help for create
|
||||
-h, --help help for create
|
||||
-m, --monitor monitor the result after sending the command (default true)
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
@ -27,6 +28,7 @@ australis create [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -36,4 +38,4 @@ australis create [flags]
|
|||
|
||||
* [australis](australis.md) - australis is a client for Apache Aurora
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -23,6 +23,7 @@ Fetch information from Aurora
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -31,9 +32,14 @@ Fetch information from Aurora
|
|||
### SEE ALSO
|
||||
|
||||
* [australis](australis.md) - australis is a client for Apache Aurora
|
||||
* [australis fetch capacity](australis_fetch_capacity.md) - Fetch capacity report
|
||||
* [australis fetch jobs](australis_fetch_jobs.md) - Fetch a list of task Aurora running under a role.
|
||||
* [australis fetch leader](australis_fetch_leader.md) - Fetch current Aurora leader given Zookeeper nodes.
|
||||
* [australis fetch master](australis_fetch_master.md) - Fetch current Aurora master nodes/leader given Zookeeper nodes.
|
||||
* [australis fetch mesos](australis_fetch_mesos.md) - Fetch information from Mesos.
|
||||
* [australis fetch quota](australis_fetch_quota.md) - Fetch the quotas of given roles
|
||||
* [australis fetch status](australis_fetch_status.md) - Fetch the maintenance status of a node from Aurora
|
||||
* [australis fetch task](australis_fetch_task.md) - Task information from Aurora
|
||||
* [australis fetch tasks](australis_fetch_tasks.md) - Fetch tasks with status
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
40
docs/australis_fetch_capacity.md
Normal file
40
docs/australis_fetch_capacity.md
Normal file
|
@ -0,0 +1,40 @@
|
|||
## australis fetch capacity
|
||||
|
||||
Fetch capacity report
|
||||
|
||||
### Synopsis
|
||||
|
||||
This command will show detailed capacity report of the cluster
|
||||
|
||||
```
|
||||
australis fetch capacity [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-h, --help help for capacity
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis fetch](australis_fetch.md) - Fetch information from Aurora
|
||||
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
|
@ -28,6 +28,7 @@ australis fetch jobs [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -37,4 +38,4 @@ australis fetch jobs [flags]
|
|||
|
||||
* [australis fetch](australis_fetch.md) - Fetch information from Aurora
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -29,6 +29,7 @@ australis fetch leader [zkNode0, zkNode1, ...zkNodeN] [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -38,4 +39,4 @@ australis fetch leader [zkNode0, zkNode1, ...zkNodeN] [flags]
|
|||
|
||||
* [australis fetch](australis_fetch.md) - Fetch information from Aurora
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
42
docs/australis_fetch_master.md
Normal file
42
docs/australis_fetch_master.md
Normal file
|
@ -0,0 +1,42 @@
|
|||
## australis fetch master
|
||||
|
||||
Fetch current Aurora master nodes/leader given Zookeeper nodes.
|
||||
|
||||
### Synopsis
|
||||
|
||||
Gets the current aurora master nodes/leader using information from Zookeeper path.
|
||||
Pass Zookeeper nodes separated by a space as an argument to this command.
|
||||
|
||||
```
|
||||
australis fetch master [zkNode0 zkNode1 ...zkNodeN] [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-h, --help help for master
|
||||
--zkPath string Zookeeper node path to get master nodes/leader (default "/aurora/scheduler")
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis fetch](australis_fetch.md) - Fetch information from Aurora
|
||||
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
38
docs/australis_fetch_mesos.md
Normal file
38
docs/australis_fetch_mesos.md
Normal file
|
@ -0,0 +1,38 @@
|
|||
## australis fetch mesos
|
||||
|
||||
Fetch information from Mesos.
|
||||
|
||||
### Synopsis
|
||||
|
||||
Fetch information from Mesos.
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-h, --help help for mesos
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis fetch](australis_fetch.md) - Fetch information from Aurora
|
||||
* [australis fetch mesos leader](australis_fetch_mesos_leader.md) - Fetch current Mesos-master leader given Zookeeper nodes.
|
||||
* [australis fetch mesos master](australis_fetch_mesos_master.md) - Fetch current Mesos-master nodes/leader given Zookeeper nodes.
|
||||
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
43
docs/australis_fetch_mesos_leader.md
Normal file
43
docs/australis_fetch_mesos_leader.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
## australis fetch mesos leader
|
||||
|
||||
Fetch current Mesos-master leader given Zookeeper nodes.
|
||||
|
||||
### Synopsis
|
||||
|
||||
Gets the current leading Mesos-master instance using information from Zookeeper path.
|
||||
Pass Zookeeper nodes separated by a space as an argument to this command. If no nodes are provided,
|
||||
it fetches leader from local Mesos agent or Zookeeper
|
||||
|
||||
```
|
||||
australis fetch mesos leader [zkNode0, zkNode1, ...zkNodeN] [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-h, --help help for leader
|
||||
--zkPath string Zookeeper node path where mesos leader election happens (default "/mesos")
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis fetch mesos](australis_fetch_mesos.md) - Fetch information from Mesos.
|
||||
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
43
docs/australis_fetch_mesos_master.md
Normal file
43
docs/australis_fetch_mesos_master.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
## australis fetch mesos master
|
||||
|
||||
Fetch current Mesos-master nodes/leader given Zookeeper nodes.
|
||||
|
||||
### Synopsis
|
||||
|
||||
Gets the current Mesos-master instances using information from Zookeeper path.
|
||||
Pass Zookeeper nodes separated by a space as an argument to this command. If no nodes are provided,
|
||||
it fetches Mesos-master nodes/leader from local Mesos agent or Zookeeper
|
||||
|
||||
```
|
||||
australis fetch mesos master [zkNode0 zkNode1 ...zkNodeN] [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-h, --help help for master
|
||||
--zkPath string Zookeeper node path to get mesos master nodes/leader (default "/mesos")
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis fetch mesos](australis_fetch_mesos.md) - Fetch information from Mesos.
|
||||
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
40
docs/australis_fetch_quota.md
Normal file
40
docs/australis_fetch_quota.md
Normal file
|
@ -0,0 +1,40 @@
|
|||
## australis fetch quota
|
||||
|
||||
Fetch the quotas of given roles
|
||||
|
||||
### Synopsis
|
||||
|
||||
This command will print list of resource quotas with the aggregated resources for the given roles
|
||||
|
||||
```
|
||||
australis fetch quota [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-h, --help help for quota
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis fetch](australis_fetch.md) - Fetch information from Aurora
|
||||
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
|
@ -27,6 +27,7 @@ australis fetch status [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -36,4 +37,4 @@ australis fetch status [flags]
|
|||
|
||||
* [australis fetch](australis_fetch.md) - Fetch information from Aurora
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -23,6 +23,7 @@ Task information from Aurora
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -34,4 +35,4 @@ Task information from Aurora
|
|||
* [australis fetch task config](australis_fetch_task_config.md) - Fetch a list of task configurations from Aurora.
|
||||
* [australis fetch task status](australis_fetch_task_status.md) - Fetch task status for a Job key.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -30,6 +30,7 @@ australis fetch task config [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -39,4 +40,4 @@ australis fetch task config [flags]
|
|||
|
||||
* [australis fetch task](australis_fetch_task.md) - Task information from Aurora
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -30,6 +30,7 @@ australis fetch task status [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -39,4 +40,4 @@ australis fetch task status [flags]
|
|||
|
||||
* [australis fetch task](australis_fetch_task.md) - Task information from Aurora
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
44
docs/australis_fetch_tasks.md
Normal file
44
docs/australis_fetch_tasks.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
## australis fetch tasks
|
||||
|
||||
Fetch tasks with status
|
||||
|
||||
### Synopsis
|
||||
|
||||
This command will return the list of tasks with a given status
|
||||
|
||||
```
|
||||
australis fetch tasks [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-e, --environment string Aurora Environment
|
||||
-h, --help help for tasks
|
||||
-n, --name string Aurora Name
|
||||
-r, --role string Aurora Role
|
||||
-x, --status string Task Status
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis fetch](australis_fetch.md) - Fetch information from Aurora
|
||||
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
|
@ -23,6 +23,7 @@ Force the scheduler to do a snapshot, a backup, or a task reconciliation.
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -35,4 +36,4 @@ Force the scheduler to do a snapshot, a backup, or a task reconciliation.
|
|||
* [australis force recon](australis_force_recon.md) - Force the leading scheduler to perform a reconciliation.
|
||||
* [australis force snapshot](australis_force_snapshot.md) - Force the leading scheduler to perform a Snapshot.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -28,6 +28,7 @@ australis force backup [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -37,4 +38,4 @@ australis force backup [flags]
|
|||
|
||||
* [australis force](australis_force.md) - Force the scheduler to do a snapshot, a backup, or a task reconciliation.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -30,6 +30,7 @@ state for all currently known non-terminal tasks.
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -41,4 +42,4 @@ state for all currently known non-terminal tasks.
|
|||
* [australis force recon explicit](australis_force_recon_explicit.md) - Force the leading scheduler to perform an explicit recon.
|
||||
* [australis force recon implicit](australis_force_recon_implicit.md) - Force the leading scheduler to perform an implicit recon.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -29,6 +29,7 @@ australis force recon explicit [batch_size] [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -38,4 +39,4 @@ australis force recon explicit [batch_size] [flags]
|
|||
|
||||
* [australis force recon](australis_force_recon.md) - Force the leading scheduler to perform a reconciliation.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -28,6 +28,7 @@ australis force recon implicit [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -37,4 +38,4 @@ australis force recon implicit [flags]
|
|||
|
||||
* [australis force recon](australis_force_recon.md) - Force the leading scheduler to perform a reconciliation.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -28,6 +28,7 @@ australis force snapshot [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -37,4 +38,4 @@ australis force snapshot [flags]
|
|||
|
||||
* [australis force](australis_force.md) - Force the scheduler to do a snapshot, a backup, or a task reconciliation.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -23,6 +23,7 @@ Kill an Aurora Job
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -31,7 +32,7 @@ Kill an Aurora Job
|
|||
### SEE ALSO
|
||||
|
||||
* [australis](australis.md) - australis is a client for Apache Aurora
|
||||
* [australis kill entire-cluster](australis_kill_entire-cluster.md) - Kill every task in the cluster.
|
||||
* [australis kill job](australis_kill_job.md) - Kill an Aurora Job
|
||||
* [australis kill tasks](australis_kill_tasks.md) - Kill Aurora Tasks
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -15,6 +15,7 @@ australis kill job [flags]
|
|||
```
|
||||
-e, --environment string Aurora Environment
|
||||
-h, --help help for job
|
||||
-m, --monitor monitor the result after sending the command (default true)
|
||||
-n, --name string Aurora Name
|
||||
-r, --role string Aurora Role
|
||||
```
|
||||
|
@ -30,6 +31,7 @@ australis kill job [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -39,4 +41,4 @@ australis kill job [flags]
|
|||
|
||||
* [australis kill](australis_kill.md) - Kill an Aurora Job
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
45
docs/australis_kill_tasks.md
Normal file
45
docs/australis_kill_tasks.md
Normal file
|
@ -0,0 +1,45 @@
|
|||
## australis kill tasks
|
||||
|
||||
Kill Aurora Tasks
|
||||
|
||||
### Synopsis
|
||||
|
||||
Kill Aurora Tasks
|
||||
|
||||
```
|
||||
australis kill tasks [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-e, --environment string Aurora Environment
|
||||
-h, --help help for tasks
|
||||
-I, --instances string Instances e.g. 1, 2, 5
|
||||
-m, --monitor monitor the result after sending the command (default true)
|
||||
-n, --name string Aurora Name
|
||||
-r, --role string Aurora Role
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis kill](australis_kill.md) - Kill an Aurora Job
|
||||
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
|
@ -23,6 +23,7 @@ Watch for a specific state change
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -33,4 +34,4 @@ Watch for a specific state change
|
|||
* [australis](australis.md) - australis is a client for Apache Aurora
|
||||
* [australis monitor hosts](australis_monitor_hosts.md) - Watch a host maintenance status until it enters one of the desired statuses.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -17,7 +17,6 @@ australis monitor hosts [flags]
|
|||
-h, --help help for hosts
|
||||
--interval duration Interval at which to poll scheduler. (default 5s)
|
||||
--statuses strings List of acceptable statuses for a host to be in. (case-insensitive) [NONE, SCHEDULED, DRAINED, DRAINING] (default [DRAINED])
|
||||
--timeout duration Time after which the monitor will stop polling and throw an error. (default 10m0s)
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
@ -31,6 +30,7 @@ australis monitor hosts [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -40,4 +40,4 @@ australis monitor hosts [flags]
|
|||
|
||||
* [australis monitor](australis_monitor.md) - Watch for a specific state change
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
44
docs/australis_pulse.md
Normal file
44
docs/australis_pulse.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
## australis pulse
|
||||
|
||||
Pulse a Job update
|
||||
|
||||
### Synopsis
|
||||
|
||||
Pulse a Job update
|
||||
|
||||
```
|
||||
australis pulse [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-e, --environment string Aurora Environment
|
||||
-h, --help help for pulse
|
||||
--id string Update ID
|
||||
-n, --name string Aurora Name
|
||||
-r, --role string Aurora Role
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis](australis.md) - australis is a client for Apache Aurora
|
||||
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
37
docs/australis_restart.md
Normal file
37
docs/australis_restart.md
Normal file
|
@ -0,0 +1,37 @@
|
|||
## australis restart
|
||||
|
||||
Restart an Aurora Job.
|
||||
|
||||
### Synopsis
|
||||
|
||||
Restart an Aurora Job.
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-h, --help help for restart
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis](australis.md) - australis is a client for Apache Aurora
|
||||
* [australis restart job](australis_restart_job.md) - Restart a Job.
|
||||
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
43
docs/australis_restart_job.md
Normal file
43
docs/australis_restart_job.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
## australis restart job
|
||||
|
||||
Restart a Job.
|
||||
|
||||
### Synopsis
|
||||
|
||||
Restart a Job.
|
||||
|
||||
```
|
||||
australis restart job [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-e, --environment string Aurora Environment
|
||||
-h, --help help for job
|
||||
-n, --name string Aurora Name
|
||||
-r, --role string Aurora Role
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis restart](australis_restart.md) - Restart an Aurora Job.
|
||||
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
45
docs/australis_restart_tasks.md
Normal file
45
docs/australis_restart_tasks.md
Normal file
|
@ -0,0 +1,45 @@
|
|||
## australis restart tasks
|
||||
|
||||
Restart tasks for a Job.
|
||||
|
||||
### Synopsis
|
||||
|
||||
Restart tasks for a Job.
|
||||
|
||||
```
|
||||
australis restart tasks [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-e, --environment string Aurora Environment
|
||||
-h, --help help for tasks
|
||||
-I, --instances string Instances e.g. 1, 2, 5
|
||||
-m, --monitor monitor the result after sending the command (default true)
|
||||
-n, --name string Aurora Name
|
||||
-r, --role string Aurora Role
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis restart](australis_restart.md) - Restart an Aurora Job.
|
||||
|
||||
###### Auto generated by spf13/cobra on 21-Sep-2022
|
45
docs/australis_resume.md
Normal file
45
docs/australis_resume.md
Normal file
|
@ -0,0 +1,45 @@
|
|||
## australis resume
|
||||
|
||||
Resume a Job update
|
||||
|
||||
### Synopsis
|
||||
|
||||
Resume a Job update
|
||||
|
||||
```
|
||||
australis resume [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-e, --environment string Aurora Environment
|
||||
-h, --help help for resume
|
||||
--id string Update ID
|
||||
--message string Message to store along resume.
|
||||
-n, --name string Aurora Name
|
||||
-r, --role string Aurora Role
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis](australis.md) - australis is a client for Apache Aurora
|
||||
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
|
@ -1,10 +1,10 @@
|
|||
## australis rollback
|
||||
|
||||
rollback an operation such as an Update
|
||||
Rollback an operation such as an Update
|
||||
|
||||
### Synopsis
|
||||
|
||||
rollback an operation such as an Update
|
||||
Rollback an operation such as an Update
|
||||
|
||||
### Options
|
||||
|
||||
|
@ -23,6 +23,7 @@ rollback an operation such as an Update
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -31,6 +32,6 @@ rollback an operation such as an Update
|
|||
### SEE ALSO
|
||||
|
||||
* [australis](australis.md) - australis is a client for Apache Aurora
|
||||
* [australis rollback update](australis_rollback_update.md) - rollback an update that is currently paused
|
||||
* [australis rollback update](australis_rollback_update.md) - Rollback an update
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
## australis rollback update
|
||||
|
||||
rollback an update that is currently paused
|
||||
Rollback an update
|
||||
|
||||
### Synopsis
|
||||
|
||||
rollback an update that is currently paused
|
||||
Rollback an update
|
||||
|
||||
```
|
||||
australis rollback update [flags]
|
||||
|
@ -32,6 +32,7 @@ australis rollback update [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -39,6 +40,6 @@ australis rollback update [flags]
|
|||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis rollback](australis_rollback.md) - rollback an operation such as an Update
|
||||
* [australis rollback](australis_rollback.md) - Rollback an operation such as an Update
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
## australis kill entire-cluster
|
||||
## australis schedule
|
||||
|
||||
Kill every task in the cluster.
|
||||
Schedule a cron job on Aurora scheduler
|
||||
|
||||
### Synopsis
|
||||
|
||||
To be written.
|
||||
Schedule a cron job on Aurora scheduler
|
||||
|
||||
```
|
||||
australis kill entire-cluster [flags]
|
||||
australis schedule [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-h, --help help for entire-cluster
|
||||
-h, --help help for schedule
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
@ -27,6 +27,7 @@ australis kill entire-cluster [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -34,6 +35,6 @@ australis kill entire-cluster [flags]
|
|||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis kill](australis_kill.md) - Kill an Aurora Job
|
||||
* [australis](australis.md) - australis is a client for Apache Aurora
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
|
@ -23,6 +23,7 @@ Set a value in the Aurora Scheduler.
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -33,4 +34,4 @@ Set a value in the Aurora Scheduler.
|
|||
* [australis](australis.md) - australis is a client for Apache Aurora
|
||||
* [australis set quota](australis_set_quota.md) - Set Quota resources for a role.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -27,6 +27,7 @@ australis set quota <role> cpu:<value> ram:<value> disk:<value> [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -36,4 +37,4 @@ australis set quota <role> cpu:<value> ram:<value> disk:<value> [flags]
|
|||
|
||||
* [australis set](australis_set.md) - Set a value in the Aurora Scheduler.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
37
docs/australis_simulate.md
Normal file
37
docs/australis_simulate.md
Normal file
|
@ -0,0 +1,37 @@
|
|||
## australis simulate
|
||||
|
||||
Simulate some work based on the current cluster condition, and return the output
|
||||
|
||||
### Synopsis
|
||||
|
||||
Simulate some work based on the current cluster condition, and return the output
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-h, --help help for simulate
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis](australis.md) - australis is a client for Apache Aurora
|
||||
* [australis simulate fit](australis_simulate_fit.md) - Compute how many tasks can we fit to a cluster
|
||||
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
40
docs/australis_simulate_fit.md
Normal file
40
docs/australis_simulate_fit.md
Normal file
|
@ -0,0 +1,40 @@
|
|||
## australis simulate fit
|
||||
|
||||
Compute how many tasks can we fit to a cluster
|
||||
|
||||
### Synopsis
|
||||
|
||||
Compute how many tasks can we fit to a cluster
|
||||
|
||||
```
|
||||
australis simulate fit [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-h, --help help for fit
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis simulate](australis_simulate.md) - Simulate some work based on the current cluster condition, and return the output
|
||||
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
|
@ -1,10 +1,10 @@
|
|||
## australis start
|
||||
|
||||
Start a service, maintenance on a host (DRAIN), a snapshot, or a backup.
|
||||
Start a service, maintenance on a host (DRAIN), a snapshot, an update, or a backup.
|
||||
|
||||
### Synopsis
|
||||
|
||||
Start a service, maintenance on a host (DRAIN), a snapshot, or a backup.
|
||||
Start a service, maintenance on a host (DRAIN), a snapshot, an update, or a backup.
|
||||
|
||||
### Options
|
||||
|
||||
|
@ -23,6 +23,7 @@ Start a service, maintenance on a host (DRAIN), a snapshot, or a backup.
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -34,5 +35,6 @@ Start a service, maintenance on a host (DRAIN), a snapshot, or a backup.
|
|||
* [australis start drain](australis_start_drain.md) - Place a list of space separated Mesos Agents into draining mode.
|
||||
* [australis start maintenance](australis_start_maintenance.md) - Place a list of space separated Mesos Agents into maintenance mode.
|
||||
* [australis start sla-drain](australis_start_sla-drain.md) - Place a list of space separated Mesos Agents into maintenance mode using SLA aware strategies.
|
||||
* [australis start update](australis_start_update.md) - Start an update on an Aurora long running service.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -10,7 +10,7 @@ are killed and rescheduled in an Agent that is not in maintenance mode. Command
|
|||
expects a space separated list of hosts to place into maintenance mode.
|
||||
|
||||
```
|
||||
australis start drain [space separated host list] [flags]
|
||||
australis start drain [space separated host list or use JSON flags] [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
@ -18,7 +18,8 @@ australis start drain [space separated host list] [flags]
|
|||
```
|
||||
-h, --help help for drain
|
||||
--interval duration Interval at which to poll scheduler. (default 5s)
|
||||
--timeout duration Time after which the monitor will stop polling and throw an error. (default 10m0s)
|
||||
--json Read JSON list of agents from the STDIN.
|
||||
--json-file string JSON file to read list of agents from.
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
@ -32,6 +33,7 @@ australis start drain [space separated host list] [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -39,6 +41,6 @@ australis start drain [space separated host list] [flags]
|
|||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis start](australis_start.md) - Start a service, maintenance on a host (DRAIN), a snapshot, or a backup.
|
||||
* [australis start](australis_start.md) - Start a service, maintenance on a host (DRAIN), a snapshot, an update, or a backup.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -9,7 +9,7 @@ are de-prioritized for scheduling a task. Command
|
|||
expects a space separated list of hosts to place into maintenance mode.
|
||||
|
||||
```
|
||||
australis start maintenance [space separated host list] [flags]
|
||||
australis start maintenance [space separated host list or use JSON flags] [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
@ -17,7 +17,8 @@ australis start maintenance [space separated host list] [flags]
|
|||
```
|
||||
-h, --help help for maintenance
|
||||
--interval duration Interval at which to poll scheduler. (default 5s)
|
||||
--timeout duration Time after which the monitor will stop polling and throw an error. (default 10m0s)
|
||||
--json Read JSON list of agents from the STDIN.
|
||||
--json-file string JSON file to read list of agents from.
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
@ -31,6 +32,7 @@ australis start maintenance [space separated host list] [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -38,6 +40,6 @@ australis start maintenance [space separated host list] [flags]
|
|||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis start](australis_start.md) - Start a service, maintenance on a host (DRAIN), a snapshot, or a backup.
|
||||
* [australis start](australis_start.md) - Start a service, maintenance on a host (DRAIN), a snapshot, an update, or a backup.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -8,11 +8,26 @@ Adds a Mesos Agent to Aurora's Drain list. Agents in this list
|
|||
are not allowed to schedule new tasks and any tasks already running on this Agent
|
||||
are killed and rescheduled in an Agent that is not in maintenance mode. Command
|
||||
expects a space separated list of hosts to place into maintenance mode.
|
||||
If the --count argument is passed, tasks will be drained using the count SLA policy as a fallback
|
||||
when a Job does not have a defined SLA policy.
|
||||
If the --percentage argument is passed, tasks will be drained using the percentage SLA policy as a fallback
|
||||
when a Job does not have a defined SLA policy.
|
||||
|
||||
```
|
||||
australis start sla-drain [space separated host list or use JSON flags] [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-h, --help help for sla-drain
|
||||
--count int Instances count that should be running to meet SLA. (default 5)
|
||||
--duration RUNNING Minimum time duration a task needs to be RUNNING to be treated as active. (default 1m0s)
|
||||
-h, --help help for sla-drain
|
||||
--interval duration Interval at which to poll scheduler. (default 10s)
|
||||
--json Read JSON list of agents from the STDIN.
|
||||
--json-file string JSON file to read list of agents from.
|
||||
--percentage float Percentage of instances that should be running to meet SLA. (default 80)
|
||||
--sla-limit duration Time limit after which SLA-Aware drain sheds SLA Awareness. (default 1h0m0s)
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
@ -26,6 +41,7 @@ expects a space separated list of hosts to place into maintenance mode.
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -33,8 +49,6 @@ expects a space separated list of hosts to place into maintenance mode.
|
|||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis start](australis_start.md) - Start a service, maintenance on a host (DRAIN), a snapshot, or a backup.
|
||||
* [australis start sla-drain count](australis_start_sla-drain_count.md) - Place a list of space separated Mesos Agents into maintenance mode using the count SLA aware policy as a fallback.
|
||||
* [australis start sla-drain percentage](australis_start_sla-drain_percentage.md) - Place a list of space separated Mesos Agents into maintenance mode using the percentage SLA aware policy as a fallback.
|
||||
* [australis start](australis_start.md) - Start a service, maintenance on a host (DRAIN), a snapshot, an update, or a backup.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
## australis start sla-drain count
|
||||
|
||||
Place a list of space separated Mesos Agents into maintenance mode using the count SLA aware policy as a fallback.
|
||||
|
||||
### Synopsis
|
||||
|
||||
Adds a Mesos Agent to Aurora's Drain list. Tasks will be drained using the count SLA policy as a fallback
|
||||
when a Job does not have a defined SLA policy.
|
||||
|
||||
```
|
||||
australis start sla-drain count [space separated host list] [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
--count int Instances count that should be running to meet SLA. (default 5)
|
||||
--duration RUNNING Minimum time duration a task needs to be RUNNING to be treated as active. (default 45s)
|
||||
-h, --help help for count
|
||||
--interval duration Interval at which to poll scheduler. (default 10s)
|
||||
--sla-limit duration Time limit after which SLA-Aware drain sheds SLA Awareness. (default 1h0m0s)
|
||||
--timeout duration Time after which the monitor will stop polling and throw an error. (default 20m0s)
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis start sla-drain](australis_start_sla-drain.md) - Place a list of space separated Mesos Agents into maintenance mode using SLA aware strategies.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
|
@ -1,45 +0,0 @@
|
|||
## australis start sla-drain percentage
|
||||
|
||||
Place a list of space separated Mesos Agents into maintenance mode using the percentage SLA aware policy as a fallback.
|
||||
|
||||
### Synopsis
|
||||
|
||||
Adds a Mesos Agent to Aurora's Drain list. Tasks will be drained using the percentage SLA policy as a fallback
|
||||
when a Job does not have a defined SLA policy.
|
||||
|
||||
```
|
||||
australis start sla-drain percentage [space separated host list] [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
--duration RUNNING Minimum time duration a task needs to be RUNNING to be treated as active. (default 45s)
|
||||
-h, --help help for percentage
|
||||
--interval duration Interval at which to poll scheduler. (default 10s)
|
||||
--percent float Percentage of instances that should be running to meet SLA. (default 75)
|
||||
--sla-limit duration Time limit after which SLA-Aware drain sheds SLA Awareness. (default 1h0m0s)
|
||||
--timeout duration Time after which the monitor will stop polling and throw an error. (default 20m0s)
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis start sla-drain](australis_start_sla-drain.md) - Place a list of space separated Mesos Agents into maintenance mode using SLA aware strategies.
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
42
docs/australis_start_update.md
Normal file
42
docs/australis_start_update.md
Normal file
|
@ -0,0 +1,42 @@
|
|||
## australis start update
|
||||
|
||||
Start an update on an Aurora long running service.
|
||||
|
||||
### Synopsis
|
||||
|
||||
Starts the update process on an Aurora long running service. If no such service exists, the update mechanism
|
||||
will act as a deployment, creating all new instances based on the requirements in the update configuration.
|
||||
|
||||
```
|
||||
australis start update [update config] [flags]
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
```
|
||||
-h, --help help for update
|
||||
--interval duration Interval at which to poll scheduler. (default 5s)
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
||||
```
|
||||
-a, --caCertsPath string Path where CA certificates can be found.
|
||||
-c, --clientCert string Client certificate to use to connect to Aurora.
|
||||
-k, --clientKey string Client key to use to connect to Aurora.
|
||||
--config string Config file to use. (default "/etc/aurora/australis.yml")
|
||||
-l, --logLevel string Set logging level [panic fatal error warning info debug trace]. (default "info")
|
||||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
```
|
||||
|
||||
### SEE ALSO
|
||||
|
||||
* [australis start](australis_start.md) - Start a service, maintenance on a host (DRAIN), a snapshot, an update, or a backup.
|
||||
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
|
@ -23,6 +23,7 @@ Stop a service or maintenance on a host (DRAIN).
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -34,4 +35,4 @@ Stop a service or maintenance on a host (DRAIN).
|
|||
* [australis stop drain](australis_stop_drain.md) - Stop maintenance on a host (move to NONE).
|
||||
* [australis stop update](australis_stop_update.md) - Stop update
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -15,7 +15,6 @@ australis stop drain [space separated host list] [flags]
|
|||
```
|
||||
-h, --help help for drain
|
||||
--interval duration Interval at which to poll scheduler. (default 5s)
|
||||
--timeout duration Time after which the monitor will stop polling and throw an error. (default 1m0s)
|
||||
```
|
||||
|
||||
### Options inherited from parent commands
|
||||
|
@ -29,6 +28,7 @@ australis stop drain [space separated host list] [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -38,4 +38,4 @@ australis stop drain [space separated host list] [flags]
|
|||
|
||||
* [australis stop](australis_stop.md) - Stop a service or maintenance on a host (DRAIN).
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
|
@ -30,6 +30,7 @@ australis stop update [update ID] [flags]
|
|||
-p, --password string Password to use for API authentication
|
||||
-s, --scheduler_addr string Aurora Scheduler's address.
|
||||
-i, --skipCertVerification Skip CA certificate hostname verification.
|
||||
-t, --timeout duration Gorealis timeout. (default 20s)
|
||||
--toJSON Print output in JSON format.
|
||||
-u, --username string Username to use for API authentication
|
||||
-z, --zookeeper string Zookeeper node(s) where Aurora stores information. (comma separated list)
|
||||
|
@ -39,4 +40,4 @@ australis stop update [update ID] [flags]
|
|||
|
||||
* [australis stop](australis_stop.md) - Stop a service or maintenance on a host (DRAIN).
|
||||
|
||||
###### Auto generated by spf13/cobra on 22-Mar-2019
|
||||
###### Auto generated by spf13/cobra on 8-Sep-2022
|
||||
|
|
15
go.mod
15
go.mod
|
@ -1,15 +1,16 @@
|
|||
module github.com/aurora-scheduler/australis
|
||||
|
||||
go 1.15
|
||||
|
||||
require (
|
||||
github.com/aurora-scheduler/gorealis/v2 v2.21.4
|
||||
github.com/aurora-scheduler/gorealis/v2 v2.29.0
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/sirupsen/logrus v1.4.2
|
||||
github.com/spf13/cobra v0.0.5
|
||||
github.com/sirupsen/logrus v1.6.0
|
||||
github.com/spf13/cobra v1.0.0
|
||||
github.com/spf13/pflag v1.0.5
|
||||
github.com/spf13/viper v1.6.2
|
||||
github.com/spf13/viper v1.6.3
|
||||
github.com/stretchr/testify v1.5.0
|
||||
gopkg.in/yaml.v2 v2.2.8
|
||||
)
|
||||
|
||||
go 1.13
|
||||
|
||||
replace github.com/apache/thrift v0.12.0 => github.com/ridv/thrift v0.12.2
|
||||
replace github.com/apache/thrift v0.13.0 => github.com/ridv/thrift v0.13.2
|
||||
|
|
216
internal/job.go
Normal file
216
internal/job.go
Normal file
|
@ -0,0 +1,216 @@
|
|||
/**
|
||||
* 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 internal
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
realis "github.com/aurora-scheduler/gorealis/v2"
|
||||
"github.com/aurora-scheduler/gorealis/v2/gen-go/apache/aurora"
|
||||
)
|
||||
|
||||
type URI struct {
|
||||
URI string `yaml:"uri"`
|
||||
Extract bool `yaml:"extract"`
|
||||
Cache bool `yaml:"cache"`
|
||||
}
|
||||
|
||||
type Executor struct {
|
||||
Name string `yaml:"name"`
|
||||
Data string `yaml:"data"`
|
||||
}
|
||||
|
||||
type ThermosProcess struct {
|
||||
Name string `yaml:"name"`
|
||||
Cmd string `yaml:"cmd"`
|
||||
}
|
||||
|
||||
type DockerContainer struct {
|
||||
Name string `yaml:"name"`
|
||||
Tag string `yaml:"tag"`
|
||||
}
|
||||
|
||||
type Container struct {
|
||||
Docker *DockerContainer `yaml:"docker"`
|
||||
}
|
||||
|
||||
type ValueConstraint struct {
|
||||
Name string `yaml:"name"`
|
||||
Values []string `yaml:"values"`
|
||||
Negated bool `yaml:"negated"`
|
||||
}
|
||||
|
||||
type LimitConstraint struct {
|
||||
Name string `yaml:"name"`
|
||||
Limit int32 `yaml:"limit"`
|
||||
}
|
||||
|
||||
type Job struct {
|
||||
Environment string `yaml:"environment"`
|
||||
Role string `yaml:"role"`
|
||||
Name string `yaml:"name"`
|
||||
CPU float64 `yaml:"cpu"`
|
||||
RAM int64 `yaml:"ram"`
|
||||
Disk int64 `yaml:"disk"`
|
||||
Port int64 `yaml:"port"`
|
||||
GPU int64 `yaml:"gpu"`
|
||||
Executor Executor `yaml:"executor"`
|
||||
Instances int32 `yaml:"instances"`
|
||||
MaxFailures int32 `yaml:"maxFailures"`
|
||||
URIs []URI `yaml:"uris"`
|
||||
Metadata map[string]string `yaml:"labels"`
|
||||
Service bool `yaml:"service"`
|
||||
Tier string `yaml:"tier,omitempty" default:"preemptible"`
|
||||
Priority int32 `yaml:"priority"`
|
||||
Production bool `yaml:"production"`
|
||||
Thermos []ThermosProcess `yaml:",flow,omitempty"`
|
||||
Container *Container `yaml:"container,omitempty"`
|
||||
CronSchedule *string `yaml:"cronSchedule,omitempty"`
|
||||
CronCollisionPolicy *string `yaml:"cronCollisionPolicy,omitempty"`
|
||||
ValueConstraints []ValueConstraint `yaml:"valueConstraints,flow,omitempty"`
|
||||
LimitConstraints []LimitConstraint `yaml:"limitConstraints,flow,omitempty"`
|
||||
}
|
||||
|
||||
func (j *Job) ToRealis() (*realis.AuroraJob, error) {
|
||||
auroraJob := realis.NewJob().
|
||||
Environment(j.Environment).
|
||||
Role(j.Role).
|
||||
Name(j.Name).
|
||||
CPU(j.CPU).
|
||||
RAM(j.RAM).
|
||||
Disk(j.Disk).
|
||||
AddPorts(int(j.Port)).
|
||||
IsService(j.Service).
|
||||
Tier(j.Tier).
|
||||
Priority(j.Priority).
|
||||
Production(j.Production).
|
||||
InstanceCount(j.Instances).
|
||||
MaxFailure(j.MaxFailures)
|
||||
|
||||
if j.GPU > 0 {
|
||||
auroraJob.GPU(j.GPU)
|
||||
}
|
||||
|
||||
if j.CronSchedule != nil {
|
||||
auroraJob.CronSchedule(*j.CronSchedule)
|
||||
}
|
||||
|
||||
if j.CronCollisionPolicy != nil {
|
||||
// Ignoring error because we have already checked for it in the validate function
|
||||
policy, _ := aurora.CronCollisionPolicyFromString(*j.CronCollisionPolicy)
|
||||
auroraJob.CronCollisionPolicy(policy)
|
||||
}
|
||||
|
||||
// Adding URIs.
|
||||
for _, uri := range j.URIs {
|
||||
auroraJob.AddURIs(uri.Extract, uri.Cache, uri.URI)
|
||||
}
|
||||
|
||||
// Adding Metadata.
|
||||
for key, value := range j.Metadata {
|
||||
auroraJob.AddLabel(key, value)
|
||||
}
|
||||
|
||||
// If thermos jobs processes are provided, use them
|
||||
if len(j.Thermos) > 0 {
|
||||
thermosExec := realis.ThermosExecutor{}
|
||||
for _, process := range j.Thermos {
|
||||
thermosExec.AddProcess(realis.NewThermosProcess(process.Name, process.Cmd))
|
||||
}
|
||||
auroraJob.ThermosExecutor(thermosExec)
|
||||
} else if j.Executor.Name != "" {
|
||||
// Non-Thermos executor
|
||||
if j.Executor.Name == "" {
|
||||
return nil, errors.New("no executor name provided")
|
||||
}
|
||||
|
||||
auroraJob.ExecutorName(j.Executor.Name)
|
||||
auroraJob.ExecutorData(j.Executor.Data)
|
||||
} else if j.Container != nil {
|
||||
if j.Container.Docker == nil {
|
||||
return nil, errors.New("no container specified")
|
||||
}
|
||||
|
||||
if j.Container.Docker.Tag != "" && !strings.ContainsRune(j.Container.Docker.Name, ':') {
|
||||
j.Container.Docker.Name += ":" + j.Container.Docker.Tag
|
||||
}
|
||||
auroraJob.Container(realis.NewDockerContainer().Image(j.Container.Docker.Name))
|
||||
|
||||
}
|
||||
|
||||
// Setting Constraints
|
||||
for _, valConstraint := range j.ValueConstraints {
|
||||
auroraJob.AddValueConstraint(valConstraint.Name, valConstraint.Negated, valConstraint.Values...)
|
||||
}
|
||||
|
||||
for _, limit := range j.LimitConstraints {
|
||||
auroraJob.AddLimitConstraint(limit.Name, limit.Limit)
|
||||
}
|
||||
|
||||
return auroraJob, nil
|
||||
}
|
||||
|
||||
func (j *Job) Validate() error {
|
||||
if j.Name == "" {
|
||||
return errors.New("job name not specified")
|
||||
}
|
||||
|
||||
if j.Role == "" {
|
||||
return errors.New("job role not specified")
|
||||
}
|
||||
|
||||
if j.Environment == "" {
|
||||
return errors.New("job environment not specified")
|
||||
}
|
||||
|
||||
if j.Instances <= 0 {
|
||||
return errors.New("number of instances in job cannot be less than or equal to 0")
|
||||
}
|
||||
|
||||
if j.CPU <= 0.0 {
|
||||
return errors.New("CPU must be greater than 0")
|
||||
}
|
||||
|
||||
if j.RAM <= 0 {
|
||||
return errors.New("RAM must be greater than 0")
|
||||
}
|
||||
|
||||
if j.Disk <= 0 {
|
||||
return errors.New("disk must be greater than 0")
|
||||
}
|
||||
|
||||
if len(j.Thermos) == 0 && j.Executor.Name == "" && j.Container == nil {
|
||||
return errors.New("task does not contain a thermos definition, a custom executor name, or a container to launch")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (j *Job) ValidateCron() error {
|
||||
if j.CronSchedule == nil {
|
||||
return errors.New("cron schedule must be set")
|
||||
}
|
||||
|
||||
if j.CronCollisionPolicy != nil {
|
||||
if _, err := aurora.CronCollisionPolicyFromString(*j.CronCollisionPolicy); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
killExisting := aurora.CronCollisionPolicy_KILL_EXISTING.String()
|
||||
j.CronCollisionPolicy = &killExisting
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
128
internal/updateJob.go
Normal file
128
internal/updateJob.go
Normal file
|
@ -0,0 +1,128 @@
|
|||
/**
|
||||
* 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 internal
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
realis "github.com/aurora-scheduler/gorealis/v2"
|
||||
)
|
||||
|
||||
type InstanceRange struct {
|
||||
First int32 `yaml:"first"`
|
||||
Last int32 `yaml:"last"`
|
||||
}
|
||||
|
||||
type VariableBatchStrategy struct {
|
||||
GroupSizes []int32 `yaml:"groupSizes"`
|
||||
AutoPause bool `yaml:"autoPause"`
|
||||
}
|
||||
|
||||
type BatchStrategy struct {
|
||||
GroupSize int32 `yaml:"groupSize"`
|
||||
AutoPause bool `yaml:"autoPause"`
|
||||
}
|
||||
|
||||
type QueueStrategy struct {
|
||||
GroupSize int32 `yaml:"groupSize"`
|
||||
}
|
||||
|
||||
type UpdateStrategy struct {
|
||||
VariableBatch *VariableBatchStrategy `yaml:"variableBatch"`
|
||||
Batch *BatchStrategy `yaml:"batch"`
|
||||
Queue *QueueStrategy `yaml:"queue"`
|
||||
}
|
||||
type UpdateSettings struct {
|
||||
MaxPerInstanceFailures int32 `yaml:"maxPerInstanceFailures"`
|
||||
MaxFailedInstances int32 `yaml:"maxFailedInstances"`
|
||||
MinTimeInRunning time.Duration `yaml:"minTimeInRunning"`
|
||||
RollbackOnFailure bool `yaml:"rollbackOnFailure"`
|
||||
InstanceRanges []InstanceRange `yaml:"instanceRanges"`
|
||||
InstanceCount int32 `yaml:"instanceCount"`
|
||||
PulseTimeout time.Duration `yaml:"pulseTimeout"`
|
||||
SLAAware bool `yaml:"slaAware"`
|
||||
Strategy UpdateStrategy `yaml:"strategy"`
|
||||
}
|
||||
|
||||
func (u *UpdateSettings) Validate() error {
|
||||
if u.InstanceCount <= 0 {
|
||||
return errors.New("instance count must be larger than 0")
|
||||
}
|
||||
|
||||
if u.Strategy.VariableBatch != nil {
|
||||
if len(u.Strategy.VariableBatch.GroupSizes) == 0 {
|
||||
return errors.New("variable batch strategy must specify at least one batch size")
|
||||
}
|
||||
for _, batch := range u.Strategy.VariableBatch.GroupSizes {
|
||||
if batch <= 0 {
|
||||
return errors.New("all groups in a variable batch strategy must be larger than 0")
|
||||
}
|
||||
}
|
||||
} else if u.Strategy.Batch != nil {
|
||||
if u.Strategy.Batch.GroupSize <= 0 {
|
||||
return errors.New("batch strategy must specify a group larger than 0")
|
||||
}
|
||||
} else if u.Strategy.Queue != nil {
|
||||
if u.Strategy.Queue.GroupSize <= 0 {
|
||||
return errors.New("queue strategy must specify a group larger than 0")
|
||||
}
|
||||
} else {
|
||||
log.Info("No strategy set, falling back on queue strategy with a group size 1")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type UpdateJob struct {
|
||||
JobConfig Job `yaml:"jobConfig"`
|
||||
UpdateSettings UpdateSettings `yaml:"updateSettings"`
|
||||
}
|
||||
|
||||
func (u *UpdateJob) ToRealis() (*realis.JobUpdate, error) {
|
||||
jobConfig, err := u.JobConfig.ToRealis()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("invalid job configuration %w", err)
|
||||
}
|
||||
|
||||
update := realis.JobUpdateFromAuroraTask(jobConfig.AuroraTask())
|
||||
|
||||
update.MaxPerInstanceFailures(u.UpdateSettings.MaxPerInstanceFailures).
|
||||
MaxFailedInstances(u.UpdateSettings.MaxFailedInstances).
|
||||
WatchTime(u.UpdateSettings.MinTimeInRunning).
|
||||
RollbackOnFail(u.UpdateSettings.RollbackOnFailure).
|
||||
PulseIntervalTimeout(u.UpdateSettings.PulseTimeout).
|
||||
SlaAware(u.UpdateSettings.SLAAware).
|
||||
InstanceCount(u.UpdateSettings.InstanceCount)
|
||||
|
||||
strategy := u.UpdateSettings.Strategy
|
||||
switch {
|
||||
case strategy.VariableBatch != nil:
|
||||
update.VariableBatchStrategy(strategy.VariableBatch.AutoPause, strategy.VariableBatch.GroupSizes...)
|
||||
case strategy.Batch != nil:
|
||||
update.BatchUpdateStrategy(strategy.Batch.AutoPause, strategy.Batch.GroupSize)
|
||||
case strategy.Queue != nil:
|
||||
update.QueueUpdateStrategy(strategy.Queue.GroupSize)
|
||||
default:
|
||||
update.QueueUpdateStrategy(1)
|
||||
}
|
||||
|
||||
for _, r := range u.UpdateSettings.InstanceRanges {
|
||||
update.AddInstanceRange(r.First, r.Last)
|
||||
}
|
||||
|
||||
return update, nil
|
||||
|
||||
}
|
161
internal/util.go
Normal file
161
internal/util.go
Normal file
|
@ -0,0 +1,161 @@
|
|||
/**
|
||||
* 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 internal
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/aurora-scheduler/gorealis/v2/gen-go/apache/aurora"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/cobra"
|
||||
yaml "gopkg.in/yaml.v2"
|
||||
)
|
||||
|
||||
type MonitorCmdConfig struct {
|
||||
Cmd *cobra.Command
|
||||
MonitorInterval, MonitorTimeout time.Duration
|
||||
StatusList []string
|
||||
}
|
||||
|
||||
var log *logrus.Logger
|
||||
|
||||
// Logger sets the logger available to the internal package
|
||||
func Logger(l *logrus.Logger) {
|
||||
log = l
|
||||
}
|
||||
|
||||
// ToJSON converts an interface to a JSON formatted string
|
||||
func ToJSON(v interface{}) string {
|
||||
output, err := json.Marshal(v)
|
||||
|
||||
if err != nil {
|
||||
log.Fatalf("Unable to serialize Aurora response: %+v", v)
|
||||
}
|
||||
|
||||
return string(output)
|
||||
}
|
||||
|
||||
func GetLoggingLevels() string {
|
||||
var buffer bytes.Buffer
|
||||
|
||||
for _, level := range logrus.AllLevels {
|
||||
buffer.WriteString(level.String())
|
||||
buffer.WriteString(" ")
|
||||
}
|
||||
|
||||
buffer.Truncate(buffer.Len() - 1)
|
||||
|
||||
return buffer.String()
|
||||
}
|
||||
|
||||
func MaintenanceMonitorPrint(hostResult map[string]bool, desiredStates []aurora.MaintenanceMode, toJson bool) {
|
||||
if len(hostResult) > 0 {
|
||||
// Create anonymous struct for JSON formatting
|
||||
output := struct {
|
||||
DesiredStates []string `json:"desired_states"`
|
||||
Transitioned []string `json:"transitioned"`
|
||||
NonTransitioned []string `json:"non-transitioned"`
|
||||
}{
|
||||
make([]string, 0),
|
||||
make([]string, 0),
|
||||
make([]string, 0),
|
||||
}
|
||||
|
||||
for _, state := range desiredStates {
|
||||
output.DesiredStates = append(output.DesiredStates, state.String())
|
||||
}
|
||||
|
||||
for host, ok := range hostResult {
|
||||
if ok {
|
||||
output.Transitioned = append(output.Transitioned, host)
|
||||
} else {
|
||||
output.NonTransitioned = append(output.NonTransitioned, host)
|
||||
}
|
||||
}
|
||||
|
||||
if toJson {
|
||||
fmt.Println(ToJSON(output))
|
||||
} else {
|
||||
fmt.Printf("Entered %v status: %v\n", output.DesiredStates, output.Transitioned)
|
||||
fmt.Printf("Did not enter %v status: %v\n", output.DesiredStates, output.NonTransitioned)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func UnmarshalJob(filename string) (Job, error) {
|
||||
|
||||
job := Job{}
|
||||
|
||||
if jobsFile, err := os.Open(filename); err != nil {
|
||||
return job, errors.Wrap(err, "unable to read the job config file")
|
||||
} else {
|
||||
if err := yaml.NewDecoder(jobsFile).Decode(&job); err != nil {
|
||||
return job, errors.Wrap(err, "unable to parse job config file")
|
||||
}
|
||||
|
||||
if err := job.Validate(); err != nil {
|
||||
return job, fmt.Errorf("invalid job config %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
return job, nil
|
||||
}
|
||||
|
||||
func UnmarshalTaskConfig(filename string) (*aurora.TaskConfig, error) {
|
||||
if jobsFile, err := os.Open(filename); err != nil {
|
||||
return nil, errors.Wrap(err, "unable to read the task config file")
|
||||
} else {
|
||||
job := Job{}
|
||||
|
||||
if err := yaml.NewDecoder(jobsFile).Decode(&job); err != nil {
|
||||
return nil, errors.Wrap(err, "unable to parse task config file")
|
||||
}
|
||||
|
||||
if auroraJob, err := job.ToRealis(); err != nil {
|
||||
return nil, errors.Wrap(err, "unable to parse task config file")
|
||||
} else {
|
||||
return auroraJob.JobConfig().TaskConfig, nil
|
||||
}
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func UnmarshalUpdate(filename string) (UpdateJob, error) {
|
||||
|
||||
updateJob := UpdateJob{}
|
||||
|
||||
if jobsFile, err := os.Open(filename); err != nil {
|
||||
return updateJob, errors.Wrap(err, "unable to read the job config file")
|
||||
} else {
|
||||
if err := yaml.NewDecoder(jobsFile).Decode(&updateJob); err != nil {
|
||||
return updateJob, errors.Wrap(err, "unable to parse job config file")
|
||||
}
|
||||
|
||||
if err := updateJob.JobConfig.Validate(); err != nil {
|
||||
return updateJob, fmt.Errorf("invalid job config %w", err)
|
||||
}
|
||||
if err := updateJob.UpdateSettings.Validate(); err != nil {
|
||||
return updateJob, fmt.Errorf("invalid update configuration %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
return updateJob, nil
|
||||
}
|
|
@ -12,27 +12,31 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package realis_test
|
||||
package internal
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
realis "github.com/paypal/gorealis"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestLoadClusters(t *testing.T) {
|
||||
|
||||
clusters, err := realis.LoadClusters("examples/clusters.json")
|
||||
if err != nil {
|
||||
fmt.Print(err)
|
||||
}
|
||||
|
||||
assert.Equal(t, clusters["devcluster"].Name, "devcluster")
|
||||
assert.Equal(t, clusters["devcluster"].ZK, "192.168.33.7")
|
||||
assert.Equal(t, clusters["devcluster"].SchedZKPath, "/aurora/scheduler")
|
||||
assert.Equal(t, clusters["devcluster"].AuthMechanism, "UNAUTHENTICATED")
|
||||
assert.Equal(t, clusters["devcluster"].AgentRunDir, "latest")
|
||||
assert.Equal(t, clusters["devcluster"].AgentRoot, "/var/lib/mesos")
|
||||
func TestUnmarshalJob(t *testing.T) {
|
||||
_, err := UnmarshalJob("../test/hello_world.yaml")
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestUnmarshalDedicatedJob(t *testing.T) {
|
||||
_, err := UnmarshalJob("../test/hello_world_dedicated.yaml")
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestUnmarshalCron(t *testing.T) {
|
||||
cron, err := UnmarshalJob("../test/hello_world_cron.yaml")
|
||||
assert.NoError(t, err)
|
||||
assert.NoError(t, cron.ValidateCron())
|
||||
}
|
||||
|
||||
func TestUnmarshalUpdate(t *testing.T) {
|
||||
_, err := UnmarshalUpdate("../test/update_hello_world.yaml")
|
||||
assert.NoError(t, err)
|
||||
}
|
26
test/hello_world.yaml
Normal file
26
test/hello_world.yaml
Normal file
|
@ -0,0 +1,26 @@
|
|||
---
|
||||
environment: "prod"
|
||||
role: "vagrant"
|
||||
name: "hello_world"
|
||||
cpu: 0.09
|
||||
ram: 64
|
||||
disk: 128
|
||||
instances: 1
|
||||
thermos:
|
||||
- name: "bootstrap"
|
||||
cmd: "echo bootstrapping"
|
||||
- name: "hello_gorealis"
|
||||
cmd: "while true; do echo hello world from gorealis; sleep 10; done"
|
||||
updateSettings:
|
||||
maxPerInstanceFailures: 1
|
||||
maxFailedInstances: 1
|
||||
minTimeInRunning: 1m
|
||||
rollbackOnFailure: true
|
||||
instanceRanges:
|
||||
- start: 1
|
||||
end: 4
|
||||
blockIfNoPulseAfter: 1m
|
||||
slaAware: false
|
||||
strategy:
|
||||
name: Batch
|
||||
groupSize: 2
|
|
@ -6,8 +6,10 @@ cpu: 0.09
|
|||
ram: 64
|
||||
disk: 128
|
||||
instances: 1
|
||||
cronSchedule: "*/1 * * * *"
|
||||
cronCollisionPolicy: "CANCEL_NEW"
|
||||
thermos:
|
||||
- name: "bootstrap"
|
||||
cmd: "echo bootstrapping"
|
||||
- name: "hello_gorealis"
|
||||
cmd: "while true; do echo hello world from gorealis; sleep 10; done"
|
||||
cmd: "echo hello world from gorealis; sleep 10;"
|
30
test/hello_world_dedicated.yaml
Normal file
30
test/hello_world_dedicated.yaml
Normal file
|
@ -0,0 +1,30 @@
|
|||
---
|
||||
environment: "prod"
|
||||
role: "vagrant"
|
||||
name: "hello_world"
|
||||
cpu: 0.09
|
||||
ram: 64
|
||||
disk: 128
|
||||
instances: 1
|
||||
valueConstraints:
|
||||
- name: "dedicated"
|
||||
values:
|
||||
- "vagrant/bar"
|
||||
thermos:
|
||||
- name: "bootstrap"
|
||||
cmd: "echo bootstrapping"
|
||||
- name: "hello_gorealis"
|
||||
cmd: "while true; do echo hello world from gorealis; sleep 10; done"
|
||||
updateSettings:
|
||||
maxPerInstanceFailures: 1
|
||||
maxFailedInstances: 1
|
||||
minTimeInRunning: 1m
|
||||
rollbackOnFailure: true
|
||||
instanceRanges:
|
||||
- start: 1
|
||||
end: 4
|
||||
blockIfNoPulseAfter: 1m
|
||||
slaAware: false
|
||||
strategy:
|
||||
name: Batch
|
||||
groupSize: 2
|
20
test/task_config.yaml
Normal file
20
test/task_config.yaml
Normal file
|
@ -0,0 +1,20 @@
|
|||
environment: "prod"
|
||||
role: "vagrant"
|
||||
name: "hello_world"
|
||||
cpu: 0.09
|
||||
ram: 64
|
||||
disk: 128
|
||||
valueConstraints:
|
||||
- name: "dedicated"
|
||||
values:
|
||||
- "vagrant/bar"
|
||||
limitConstraints:
|
||||
- name: "host"
|
||||
limit: 1
|
||||
- name: "zone"
|
||||
limit: 2
|
||||
thermos:
|
||||
- name: "bootstrap"
|
||||
cmd: "echo bootstrapping"
|
||||
- name: "hello_gorealis"
|
||||
cmd: "while true; do echo hello world from gorealis; sleep 10; done"
|
29
test/update_hello_world.yaml
Normal file
29
test/update_hello_world.yaml
Normal file
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
jobConfig:
|
||||
environment: "prod"
|
||||
role: "vagrant"
|
||||
name: "hello_world"
|
||||
cpu: 0.09
|
||||
ram: 64
|
||||
disk: 128
|
||||
instances: 1
|
||||
maxFailures: 1
|
||||
thermos:
|
||||
- name: "bootstrap"
|
||||
cmd: "echo bootstrapping"
|
||||
- name: "hello_gorealis"
|
||||
cmd: "while true; do echo hello world from gorealis; sleep 10; done"
|
||||
updateSettings:
|
||||
maxPerInstanceFailures: 1
|
||||
maxFailedInstances: 1
|
||||
minTimeInRunning: 1m
|
||||
rollbackOnFailure: true
|
||||
instanceCount: 1
|
||||
instanceRanges:
|
||||
- first: 1
|
||||
last: 4
|
||||
pulseTimeout: 1m
|
||||
strategy:
|
||||
variableBatch:
|
||||
groupSizes: [1,2,3]
|
||||
autoPause: true
|
56
vendor/git.apache.org/thrift.git/.clang-format
generated
vendored
56
vendor/git.apache.org/thrift.git/.clang-format
generated
vendored
|
@ -1,56 +0,0 @@
|
|||
---
|
||||
Language: Cpp
|
||||
# BasedOnStyle: LLVM
|
||||
AccessModifierOffset: -2
|
||||
ConstructorInitializerIndentWidth: 2
|
||||
AlignEscapedNewlinesLeft: false
|
||||
AlignTrailingComments: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: Inline
|
||||
AlwaysBreakTemplateDeclarations: true
|
||||
AlwaysBreakBeforeMultilineStrings: true
|
||||
BreakBeforeBinaryOperators: true
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializersBeforeComma: false
|
||||
BinPackParameters: false
|
||||
ColumnLimit: 100
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||
DerivePointerAlignment: false
|
||||
IndentCaseLabels: false
|
||||
IndentWrappedFunctionNames: false
|
||||
IndentFunctionDeclarationAfterType: false
|
||||
MaxEmptyLinesToKeep: 1
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
NamespaceIndentation: None
|
||||
ObjCSpaceAfterProperty: false
|
||||
ObjCSpaceBeforeProtocolList: true
|
||||
PenaltyBreakBeforeFirstCallParameter: 190
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakString: 10000
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyExcessCharacter: 1000000
|
||||
PenaltyReturnTypeOnItsOwnLine: 1200
|
||||
PointerAlignment: Left
|
||||
SpacesBeforeTrailingComments: 1
|
||||
Cpp11BracedListStyle: true
|
||||
Standard: Auto
|
||||
IndentWidth: 2
|
||||
TabWidth: 4
|
||||
UseTab: Never
|
||||
BreakBeforeBraces: Attach
|
||||
SpacesInParentheses: false
|
||||
SpacesInAngles: false
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInContainerLiterals: true
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
ContinuationIndentWidth: 4
|
||||
CommentPragmas: '^ IWYU pragma:'
|
||||
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
|
||||
SpaceBeforeParens: ControlStatements
|
||||
DisableFormat: false
|
||||
...
|
||||
|
1
vendor/git.apache.org/thrift.git/.dockerignore
generated
vendored
1
vendor/git.apache.org/thrift.git/.dockerignore
generated
vendored
|
@ -1 +0,0 @@
|
|||
.git/
|
112
vendor/git.apache.org/thrift.git/.editorconfig
generated
vendored
112
vendor/git.apache.org/thrift.git/.editorconfig
generated
vendored
|
@ -1,112 +0,0 @@
|
|||
#
|
||||
## Licensed to the Apache Software Foundation (ASF) under one
|
||||
## or more contributor license agreements. See the NOTICE file
|
||||
## distributed with this work for additional information
|
||||
## regarding copyright ownership. The ASF licenses this file
|
||||
## to you 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.
|
||||
##
|
||||
#
|
||||
|
||||
# EditorConfig: http://editorconfig.org
|
||||
# see doc/coding_standards.md
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
# ActionScript
|
||||
# [*.as]
|
||||
|
||||
# C
|
||||
# [*.c]
|
||||
|
||||
# C++
|
||||
[*.cpp]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
# C-Sharp
|
||||
# [*.cs]
|
||||
|
||||
# D
|
||||
# [*.d]
|
||||
|
||||
# Erlang
|
||||
# [*.erl]
|
||||
|
||||
# Go-lang
|
||||
[*.go]
|
||||
indent_style = tab
|
||||
indent_size = 8
|
||||
|
||||
# C header files
|
||||
# [*.h]
|
||||
|
||||
# Haskell
|
||||
# [*.hs]
|
||||
|
||||
# Haxe
|
||||
# [*.hx]
|
||||
|
||||
# Java
|
||||
# [*.java]
|
||||
|
||||
# Javascript
|
||||
[*.js]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
# JSON
|
||||
[*.json]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
# Lua
|
||||
# [*.lua]
|
||||
|
||||
[*.markdown]
|
||||
indent_style = space
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.md]
|
||||
indent_style = space
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
# OCaml
|
||||
# [*.ml]
|
||||
|
||||
# Delphi Pascal
|
||||
# [*.pas]
|
||||
|
||||
# PHP
|
||||
# [*.php]
|
||||
|
||||
# Perl
|
||||
# [*.pm]
|
||||
|
||||
# Python
|
||||
# [*.py]
|
||||
|
||||
# Ruby
|
||||
# [*.rb]
|
||||
|
||||
# Typescript
|
||||
# [*.ts]
|
||||
|
||||
# XML
|
||||
# [*.xml]
|
9
vendor/git.apache.org/thrift.git/.eslintignore
generated
vendored
9
vendor/git.apache.org/thrift.git/.eslintignore
generated
vendored
|
@ -1,9 +0,0 @@
|
|||
# TODO: Use eslint on js lib and generated code
|
||||
|
||||
# Ignore lib/js for now, which uses jshint currently
|
||||
lib/js/*
|
||||
# Ignore all generated code for now
|
||||
**/gen-*
|
||||
|
||||
# Don't lint nested node_modules
|
||||
**/node_modules
|
24
vendor/git.apache.org/thrift.git/.eslintrc.json
generated
vendored
24
vendor/git.apache.org/thrift.git/.eslintrc.json
generated
vendored
|
@ -1,24 +0,0 @@
|
|||
{
|
||||
"env": {
|
||||
"es6": true,
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:prettier/recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2017
|
||||
},
|
||||
"rules": {
|
||||
"no-console": "off",
|
||||
"no-var": "error",
|
||||
"prefer-const": "error",
|
||||
"no-constant-condition": [
|
||||
"error",
|
||||
{
|
||||
"checkLoops": false
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
1
vendor/git.apache.org/thrift.git/.gitattributes
generated
vendored
1
vendor/git.apache.org/thrift.git/.gitattributes
generated
vendored
|
@ -1 +0,0 @@
|
|||
* text=auto
|
59
vendor/git.apache.org/thrift.git/.github/stale.yml
generated
vendored
59
vendor/git.apache.org/thrift.git/.github/stale.yml
generated
vendored
|
@ -1,59 +0,0 @@
|
|||
# Configuration for probot-stale - https://github.com/probot/stale
|
||||
|
||||
# Number of days of inactivity before an Issue or Pull Request becomes stale
|
||||
daysUntilStale: 60
|
||||
|
||||
# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
|
||||
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
|
||||
daysUntilClose: 7
|
||||
|
||||
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
|
||||
exemptLabels:
|
||||
- Do Not Merge
|
||||
- blocked
|
||||
- pinned
|
||||
- security
|
||||
- "[Status] Maybe Later"
|
||||
|
||||
# Set to true to ignore issues in a project (defaults to false)
|
||||
exemptProjects: false
|
||||
|
||||
# Set to true to ignore issues in a milestone (defaults to false)
|
||||
exemptMilestones: false
|
||||
|
||||
# Label to use when marking as stale
|
||||
staleLabel: wontfix
|
||||
|
||||
# Comment to post when marking as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed in 7 days if no further activity occurs.
|
||||
Thank you for your contributions.
|
||||
|
||||
# Comment to post when removing the stale label.
|
||||
unmarkComment: >
|
||||
This issue is no longer stale.
|
||||
Thank you for your contributions.
|
||||
|
||||
# Comment to post when closing a stale Issue or Pull Request.
|
||||
closeComment: >
|
||||
This issue has been automatically closed due to inactivity.
|
||||
Thank you for your contributions.
|
||||
|
||||
# Limit the number of actions per hour, from 1-30. Default is 30
|
||||
limitPerRun: 30
|
||||
|
||||
# Limit to only `issues` or `pulls`
|
||||
# only: issues
|
||||
|
||||
# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls':
|
||||
# pulls:
|
||||
# daysUntilStale: 30
|
||||
# markComment: >
|
||||
# This pull request has been automatically marked as stale because it has not had
|
||||
# recent activity. It will be closed if no further activity occurs. Thank you
|
||||
# for your contributions.
|
||||
|
||||
# issues:
|
||||
# exemptLabels:
|
||||
# - confirmed
|
395
vendor/git.apache.org/thrift.git/.gitignore
generated
vendored
395
vendor/git.apache.org/thrift.git/.gitignore
generated
vendored
|
@ -1,395 +0,0 @@
|
|||
# generic ignores
|
||||
*.la
|
||||
*.lo
|
||||
*.o
|
||||
*.deps
|
||||
*.dirstamp
|
||||
*.libs
|
||||
*.log
|
||||
*.trs
|
||||
*.suo
|
||||
*.pyc
|
||||
*.cache
|
||||
*.user
|
||||
*.ipch
|
||||
*.sdf
|
||||
*.jar
|
||||
*.exe
|
||||
*.dll
|
||||
*_ReSharper*
|
||||
*.opensdf
|
||||
*.swp
|
||||
*.hi
|
||||
*~
|
||||
tags
|
||||
|
||||
.*project
|
||||
.classpath
|
||||
.dub
|
||||
.settings
|
||||
.checkstyle
|
||||
junit*.properties
|
||||
.idea
|
||||
*.iml
|
||||
*.ipr
|
||||
*.iws
|
||||
gen-*
|
||||
Makefile
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
acinclude.m4
|
||||
apache-thrift-test-library
|
||||
autom4te.cache
|
||||
cmake-*
|
||||
dub.selections.json
|
||||
libapache-thrift.a
|
||||
node_modules
|
||||
compile
|
||||
test-driver
|
||||
erl_crash.dump
|
||||
project.lock.json
|
||||
|
||||
.sonar
|
||||
.DS_Store
|
||||
.svn
|
||||
.vagrant
|
||||
.vscode
|
||||
.vs
|
||||
|
||||
/aclocal/libtool.m4
|
||||
/aclocal/lt*.m4
|
||||
/autoscan.log
|
||||
/autoscan-*.log
|
||||
/cmake_*
|
||||
/compiler/cpp/compiler.VC.db
|
||||
/compiler/cpp/compiler.VC.VC.opendb
|
||||
/compiler/cpp/test/plugin/t_cpp_generator.cc
|
||||
/compiler/cpp/src/thrift/plugin/plugin_constants.cpp
|
||||
/compiler/cpp/src/thrift/plugin/plugin_constants.h
|
||||
/compiler/cpp/src/thrift/plugin/plugin_types.cpp
|
||||
/compiler/cpp/src/thrift/plugin/plugin_types.h
|
||||
/compiler/cpp/test/*test
|
||||
/compiler/cpp/test/thrift-gen-*
|
||||
/compiler/cpp/src/thrift/thrift-bootstrap
|
||||
/compiler/cpp/src/thrift/plugin/gen.stamp
|
||||
/compiler/cpp/Debug
|
||||
/compiler/cpp/Release
|
||||
/compiler/cpp/src/thrift/libparse.a
|
||||
/compiler/cpp/src/thrift/thriftl.cc
|
||||
/compiler/cpp/src/thrift/thrifty.cc
|
||||
/compiler/cpp/src/thrift/thrifty.hh
|
||||
/compiler/cpp/src/thrift/windows/version.h
|
||||
/compiler/cpp/thrift
|
||||
/compiler/cpp/thriftl.cc
|
||||
/compiler/cpp/thrifty.cc
|
||||
/compiler/cpp/lex.yythriftl.cc
|
||||
/compiler/cpp/thrifty.h
|
||||
/compiler/cpp/thrifty.hh
|
||||
/compiler/cpp/src/thrift/version.h
|
||||
/config.*
|
||||
/configure
|
||||
/configure.lineno
|
||||
/configure.scan
|
||||
/contrib/.vagrant/
|
||||
/contrib/fb303/config.cache
|
||||
/contrib/fb303/config.log
|
||||
/contrib/fb303/config.status
|
||||
/contrib/fb303/configure
|
||||
/contrib/fb303/cpp/libfb303.a
|
||||
/contrib/fb303/java/build/
|
||||
/contrib/fb303/py/build/
|
||||
/contrib/fb303/py/fb303/FacebookService-remote
|
||||
/contrib/fb303/py/fb303/FacebookService.py
|
||||
/contrib/fb303/py/fb303/__init__.py
|
||||
/contrib/fb303/py/fb303/constants.py
|
||||
/contrib/fb303/py/fb303/ttypes.py
|
||||
/depcomp
|
||||
/install-sh
|
||||
/lib/cl/backport-update.zip
|
||||
/lib/cl/lib
|
||||
/lib/cl/run-tests
|
||||
/lib/cl/quicklisp.lisp
|
||||
/lib/cl/externals/
|
||||
/lib/cl/run-tests
|
||||
/lib/cl/quicklisp/
|
||||
/lib/cpp/Debug/
|
||||
/lib/cpp/Debug-mt/
|
||||
/lib/cpp/Release/
|
||||
/lib/cpp/Release-mt/
|
||||
/lib/cpp/src/thrift/qt/moc_TQTcpServer.cpp
|
||||
/lib/cpp/src/thrift/qt/moc__TQTcpServer.cpp
|
||||
/lib/cpp/src/thrift/config.h
|
||||
/lib/cpp/src/thrift/stamp-h2
|
||||
/lib/cpp/test/Benchmark
|
||||
/lib/cpp/test/AllProtocolsTest
|
||||
/lib/cpp/test/AnnotationTest
|
||||
/lib/cpp/test/DebugProtoTest
|
||||
/lib/cpp/test/DenseProtoTest
|
||||
/lib/cpp/test/EnumTest
|
||||
/lib/cpp/test/JSONProtoTest
|
||||
/lib/cpp/test/OptionalRequiredTest
|
||||
/lib/cpp/test/SecurityTest
|
||||
/lib/cpp/test/SpecializationTest
|
||||
/lib/cpp/test/RecursiveTest
|
||||
/lib/cpp/test/ReflectionTest
|
||||
/lib/cpp/test/RenderedDoubleConstantsTest
|
||||
/lib/cpp/test/TFDTransportTest
|
||||
/lib/cpp/test/TFileTransportTest
|
||||
/lib/cpp/test/TInterruptTest
|
||||
/lib/cpp/test/TNonblockingServerTest
|
||||
/lib/cpp/test/TNonblockingSSLServerTest
|
||||
/lib/cpp/test/TPipedTransportTest
|
||||
/lib/cpp/test/TServerIntegrationTest
|
||||
/lib/cpp/test/TSocketInterruptTest
|
||||
/lib/cpp/test/TransportTest
|
||||
/lib/cpp/test/UnitTests
|
||||
/lib/cpp/test/ZlibTest
|
||||
/lib/cpp/test/OpenSSLManualInitTest
|
||||
/lib/cpp/test/concurrency_test
|
||||
/lib/cpp/test/link_test
|
||||
/lib/cpp/test/processor_test
|
||||
/lib/cpp/test/tests.xml
|
||||
/lib/cpp/concurrency_test
|
||||
/lib/cpp/*.pc
|
||||
/lib/cpp/x64/Debug/
|
||||
/lib/cpp/x64/Debug-mt/
|
||||
/lib/cpp/x64/Release
|
||||
/lib/cpp/x64/Release-mt
|
||||
/lib/c_glib/*.gcda
|
||||
/lib/c_glib/*.gcno
|
||||
/lib/c_glib/*.loT
|
||||
/lib/c_glib/src/thrift/config.h
|
||||
/lib/c_glib/src/thrift/stamp-h3
|
||||
/lib/c_glib/test/*.gcno
|
||||
/lib/c_glib/test/testwrapper.sh
|
||||
/lib/c_glib/test/testwrapper-test*
|
||||
/lib/c_glib/test/testapplicationexception
|
||||
/lib/c_glib/test/testbinaryprotocol
|
||||
/lib/c_glib/test/testcompactprotocol
|
||||
/lib/c_glib/test/testbufferedtransport
|
||||
/lib/c_glib/test/testcontainertest
|
||||
/lib/c_glib/test/testdebugproto
|
||||
/lib/c_glib/test/testfdtransport
|
||||
/lib/c_glib/test/testframedtransport
|
||||
/lib/c_glib/test/testmemorybuffer
|
||||
/lib/c_glib/test/testoptionalrequired
|
||||
/lib/c_glib/test/testtransportsslsocket
|
||||
/lib/c_glib/test/testsimpleserver
|
||||
/lib/c_glib/test/teststruct
|
||||
/lib/c_glib/test/testthrifttest
|
||||
/lib/c_glib/test/testthrifttestclient
|
||||
/lib/c_glib/test/testtransportsocket
|
||||
/lib/c_glib/test/testserialization
|
||||
/lib/c_glib/thriftc.pc
|
||||
/lib/c_glib/thrift_c_glib.pc
|
||||
/lib/csharp/**/bin/
|
||||
/lib/csharp/**/obj/
|
||||
/lib/csharp/src/packages
|
||||
/lib/d/test/*.pem
|
||||
/lib/d/libthriftd*.a
|
||||
/lib/d/test/async_test
|
||||
/lib/d/test/client_pool_test
|
||||
/lib/d/test/serialization_benchmark
|
||||
/lib/d/test/stress_test_server
|
||||
/lib/d/test/thrift_test_client
|
||||
/lib/d/test/thrift_test_server
|
||||
/lib/d/test/transport_test
|
||||
/lib/d/unittest/
|
||||
/lib/dart/coverage
|
||||
/lib/dart/**/.packages
|
||||
/lib/dart/**/packages
|
||||
/lib/dart/**/.pub/
|
||||
/lib/dart/**/pubspec.lock
|
||||
/lib/delphi/test/skip/*.request
|
||||
/lib/delphi/test/skip/*.response
|
||||
/lib/delphi/**/*.identcache
|
||||
/lib/delphi/**/*.local
|
||||
/lib/delphi/**/*.dcu
|
||||
/lib/delphi/**/*.2007
|
||||
/lib/delphi/**/*.dproj
|
||||
/lib/delphi/**/codegen/*.bat
|
||||
/lib/erl/.eunit
|
||||
/lib/erl/.generated
|
||||
/lib/erl/.rebar/
|
||||
/lib/erl/deps/
|
||||
/lib/erl/ebin
|
||||
/lib/erl/src/thrift.app.src
|
||||
/lib/erl/test/*.beam
|
||||
/lib/erl/test/*.hrl
|
||||
/lib/erl/test/Thrift_omit_without.thrift
|
||||
/lib/haxe/test/bin
|
||||
/lib/haxe/test/data.tmp
|
||||
/lib/hs/dist
|
||||
/lib/java/.gradle
|
||||
/lib/java/android/.gradle
|
||||
/lib/java/build
|
||||
/lib/java/target
|
||||
/lib/js/dist
|
||||
/lib/js/doc
|
||||
/lib/js/test/build
|
||||
/lib/netcore/**/bin
|
||||
/lib/netcore/**/obj
|
||||
/lib/nodejs/coverage
|
||||
/lib/nodejs/node_modules/
|
||||
/lib/perl/MANIFEST
|
||||
/lib/perl/MYMETA.json
|
||||
/lib/perl/MYMETA.yml
|
||||
/lib/perl/Makefile-perl.mk
|
||||
/lib/perl/blib
|
||||
/lib/perl/pm_to_blib
|
||||
/lib/py/build
|
||||
/lib/py/thrift.egg-info/
|
||||
/lib/rb/Gemfile.lock
|
||||
/lib/rb/debug_proto_test
|
||||
/lib/rb/.config
|
||||
/lib/rb/ext/conftest.dSYM/
|
||||
/lib/rb/ext/mkmf.log
|
||||
/lib/rb/ext/thrift_native.bundle
|
||||
/lib/rb/ext/thrift_native.so
|
||||
/lib/rb/test/
|
||||
/lib/rb/thrift-*.gem
|
||||
/lib/php/src/ext/thrift_protocol/Makefile.*
|
||||
/lib/php/src/ext/thrift_protocol/build/
|
||||
/lib/php/src/ext/thrift_protocol/config.*
|
||||
/lib/php/src/ext/thrift_protocol/configure
|
||||
/lib/php/src/ext/thrift_protocol/configure.ac
|
||||
/lib/php/src/ext/thrift_protocol/configure.in
|
||||
/lib/php/src/ext/thrift_protocol/install-sh
|
||||
/lib/php/src/ext/thrift_protocol/libtool
|
||||
/lib/php/src/ext/thrift_protocol/ltmain.sh
|
||||
/lib/php/src/ext/thrift_protocol/missing
|
||||
/lib/php/src/ext/thrift_protocol/mkinstalldirs
|
||||
/lib/php/src/ext/thrift_protocol/modules/
|
||||
/lib/php/src/ext/thrift_protocol/php_thrift_protocol.lo
|
||||
/lib/php/src/ext/thrift_protocol/run-tests.php
|
||||
/lib/php/src/ext/thrift_protocol/thrift_protocol.la
|
||||
/lib/php/src/ext/thrift_protocol/tmp-php.ini
|
||||
/lib/php/src/packages/
|
||||
/lib/php/test/TEST-*.xml
|
||||
/lib/php/test/packages/
|
||||
/lib/py/dist/
|
||||
/lib/erl/logs/
|
||||
/lib/go/pkg
|
||||
/lib/go/src
|
||||
/lib/go/test/gopath/
|
||||
/lib/go/test/ThriftTest.thrift
|
||||
/lib/rs/target/
|
||||
/lib/rs/Cargo.lock
|
||||
/lib/rs/test/Cargo.lock
|
||||
/lib/rs/test/target/
|
||||
/lib/rs/test/bin/
|
||||
/lib/rs/test/src/base_one.rs
|
||||
/lib/rs/test/src/base_two.rs
|
||||
/lib/rs/test/src/midlayer.rs
|
||||
/lib/rs/test/src/recursive.rs
|
||||
/lib/rs/test/src/ultimate.rs
|
||||
/lib/rs/*.iml
|
||||
/lib/rs/**/*.iml
|
||||
/libtool
|
||||
/ltmain.sh
|
||||
/missing
|
||||
/node_modules/
|
||||
/vendor/
|
||||
/composer.lock
|
||||
/stamp-h1
|
||||
/test/features/results.json
|
||||
/test/results.json
|
||||
/test/c_glib/test_client
|
||||
/test/c_glib/test_server
|
||||
/test/cl/TestServer
|
||||
/test/cl/TestClient
|
||||
/test/cpp/StressTest
|
||||
/test/cpp/StressTestNonBlocking
|
||||
/test/cpp/TestClient
|
||||
/test/cpp/TestServer
|
||||
/test/csharp/obj
|
||||
/test/csharp/bin
|
||||
/test/dart/**/.packages
|
||||
/test/dart/**/packages
|
||||
/test/dart/**/.pub/
|
||||
/test/dart/**/pubspec.lock
|
||||
/test/log/
|
||||
/test/test.log
|
||||
/test/erl/.generated
|
||||
/test/erl/.rebar
|
||||
/test/erl/ebin
|
||||
/test/go/bin/
|
||||
/test/go/ThriftTest.thrift
|
||||
/test/go/gopath
|
||||
/test/go/pkg/
|
||||
/test/go/src/code.google.com/
|
||||
/test/go/src/common/mock_handler.go
|
||||
/test/go/src/github.com/golang/
|
||||
/test/go/src/golang.org/
|
||||
/test/go/src/gen/
|
||||
/test/go/src/thrift
|
||||
/test/haxe/bin
|
||||
/test/hs/TestClient
|
||||
/test/hs/TestServer
|
||||
/test/php/php_ext_dir/
|
||||
/test/py.twisted/_trial_temp/
|
||||
/test/rb/Gemfile.lock
|
||||
/test/netcore/**/bin
|
||||
/test/netcore/**/obj
|
||||
/test/netcore/Thrift
|
||||
/test/php/php_ext_dir/
|
||||
/test/rs/Cargo.lock
|
||||
/test/rs/src/thrift_test.rs
|
||||
/test/rs/bin/
|
||||
/test/rs/target/
|
||||
/test/rs/*.iml
|
||||
/test/rs/**/*.iml
|
||||
/lib/cl/backport-update.zip
|
||||
/lib/cl/lib
|
||||
/tutorial/cl/quicklisp.lisp
|
||||
/tutorial/cl/externals/
|
||||
/tutorial/cl/quicklisp/
|
||||
/tutorial/cl/TutorialClient
|
||||
/tutorial/cl/TutorialServer
|
||||
/tutorial/cl/backport-update.zip
|
||||
/tutorial/cl/lib/
|
||||
/tutorial/cl/shared-implementation.fasl
|
||||
/tutorial/cl/tutorial-implementation.fasl
|
||||
/tutorial/cpp/TutorialClient
|
||||
/tutorial/cpp/TutorialServer
|
||||
/tutorial/c_glib/tutorial_client
|
||||
/tutorial/c_glib/tutorial_server
|
||||
/tutorial/csharp/CsharpServer/obj
|
||||
/tutorial/csharp/CsharpServer/bin
|
||||
/tutorial/csharp/CsharpClient/obj
|
||||
/tutorial/csharp/CsharpClient/bin
|
||||
/tutorial/d/async_client
|
||||
/tutorial/d/client
|
||||
/tutorial/d/server
|
||||
/tutorial/dart/**/.packages
|
||||
/tutorial/dart/**/packages
|
||||
/tutorial/dart/**/.pub/
|
||||
/tutorial/dart/**/pubspec.lock
|
||||
/tutorial/delphi/**/*.dsk
|
||||
/tutorial/delphi/**/*.local
|
||||
/tutorial/delphi/**/*.tvsconfig
|
||||
/tutorial/delphi/**/dcu
|
||||
/tutorial/delphi/**/*.local
|
||||
/tutorial/delphi/**/*.identcache
|
||||
/tutorial/go/gopath
|
||||
/tutorial/go/go-tutorial
|
||||
/tutorial/go/calculator-remote
|
||||
/tutorial/go/src/shared
|
||||
/tutorial/go/src/tutorial
|
||||
/tutorial/go/src/git.apache.org
|
||||
/tutorial/go/src/golang.org
|
||||
/tutorial/haxe/bin
|
||||
/tutorial/hs/dist/
|
||||
/tutorial/java/build/
|
||||
/tutorial/js/build/
|
||||
/tutorial/netcore/**/bin
|
||||
/tutorial/netcore/**/obj
|
||||
/tutorial/netcore/Thrift
|
||||
/tutorial/rs/*.iml
|
||||
/tutorial/rs/src/shared.rs
|
||||
/tutorial/rs/src/tutorial.rs
|
||||
/tutorial/rs/bin
|
||||
/tutorial/rs/target
|
||||
/tutorial/rs/Cargo.lock
|
||||
/ylwrap
|
||||
|
64
vendor/git.apache.org/thrift.git/.rustfmt.toml
generated
vendored
64
vendor/git.apache.org/thrift.git/.rustfmt.toml
generated
vendored
|
@ -1,64 +0,0 @@
|
|||
max_width = 100
|
||||
hard_tabs = false
|
||||
tab_spaces = 4
|
||||
newline_style = "Auto"
|
||||
use_small_heuristics = "Default"
|
||||
indent_style = "Block"
|
||||
wrap_comments = false
|
||||
format_doc_comments = false
|
||||
comment_width = 80
|
||||
normalize_comments = false
|
||||
normalize_doc_attributes = false
|
||||
license_template_path = ""
|
||||
format_strings = false
|
||||
format_macro_matchers = false
|
||||
format_macro_bodies = true
|
||||
empty_item_single_line = true
|
||||
struct_lit_single_line = true
|
||||
fn_single_line = false
|
||||
where_single_line = false
|
||||
imports_indent = "Block"
|
||||
imports_layout = "Mixed"
|
||||
merge_imports = false
|
||||
reorder_imports = true
|
||||
reorder_modules = true
|
||||
reorder_impl_items = false
|
||||
type_punctuation_density = "Wide"
|
||||
space_before_colon = false
|
||||
space_after_colon = true
|
||||
spaces_around_ranges = false
|
||||
binop_separator = "Front"
|
||||
remove_nested_parens = true
|
||||
combine_control_expr = true
|
||||
overflow_delimited_expr = false
|
||||
struct_field_align_threshold = 0
|
||||
enum_discrim_align_threshold = 0
|
||||
match_arm_blocks = true
|
||||
force_multiline_blocks = false
|
||||
fn_args_density = "Tall"
|
||||
brace_style = "SameLineWhere"
|
||||
control_brace_style = "AlwaysSameLine"
|
||||
trailing_semicolon = true
|
||||
trailing_comma = "Vertical"
|
||||
match_block_trailing_comma = false
|
||||
blank_lines_upper_bound = 1
|
||||
blank_lines_lower_bound = 0
|
||||
edition = "2015"
|
||||
merge_derives = true
|
||||
use_try_shorthand = false
|
||||
use_field_init_shorthand = false
|
||||
force_explicit_abi = true
|
||||
condense_wildcard_suffixes = false
|
||||
color = "Auto"
|
||||
required_version = "1.0.0"
|
||||
unstable_features = false
|
||||
disable_all_formatting = false
|
||||
skip_children = false
|
||||
hide_parse_errors = false
|
||||
error_on_line_overflow = false
|
||||
error_on_unformatted = false
|
||||
report_todo = "Never"
|
||||
report_fixme = "Never"
|
||||
ignore = []
|
||||
emit_mode = "Files"
|
||||
make_backup = false
|
181
vendor/git.apache.org/thrift.git/.travis.yml
generated
vendored
181
vendor/git.apache.org/thrift.git/.travis.yml
generated
vendored
|
@ -1,181 +0,0 @@
|
|||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you 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.
|
||||
#
|
||||
|
||||
# build Apache Thrift on Travis CI - https://travis-ci.org/
|
||||
|
||||
#
|
||||
# Docker Integration
|
||||
# see: build/docker/README.md
|
||||
#
|
||||
|
||||
sudo: required
|
||||
dist: trusty
|
||||
language: cpp
|
||||
|
||||
services:
|
||||
- docker
|
||||
|
||||
install:
|
||||
- if [[ `uname` == "Linux" ]]; then build/docker/refresh.sh; fi
|
||||
|
||||
stages:
|
||||
- docker # docker images
|
||||
- thrift # thrift build jobs
|
||||
|
||||
env:
|
||||
global:
|
||||
- SCRIPT="cmake.sh"
|
||||
- BUILD_ARG=""
|
||||
- BUILD_ENV="-e CC=gcc -e CXX=g++ -e THRIFT_CROSSTEST_CONCURRENCY=4"
|
||||
- DISTRO=ubuntu-bionic
|
||||
- BUILD_LIBS="CPP C_GLIB HASKELL JAVA PYTHON TESTING TUTORIALS" # only meaningful for CMake builds
|
||||
- TRAVIS_BUILD_STAGE=test
|
||||
# DOCKER_REPO (this works for all builds as a source for docker images - you can override for fork builds in your Travis settings)
|
||||
- DOCKER_REPO="thrift/thrift-build"
|
||||
# DOCKER_USER (provide in your Travis settings if you want to build and update docker images once, instead of on every job)
|
||||
# DOCKER_PASS (same)
|
||||
|
||||
jobs:
|
||||
include:
|
||||
# ========================= stage: docker =========================
|
||||
- stage: docker
|
||||
script: true
|
||||
env:
|
||||
- JOB="Docker Build ubuntu-xenial 16.04 LTS"
|
||||
- DISTRO=ubuntu-xenial
|
||||
- TRAVIS_BUILD_STAGE=docker
|
||||
- script: true
|
||||
env:
|
||||
- JOB="Docker Build ubuntu-bionic 18.04 LTS"
|
||||
- DISTRO=ubuntu-bionic
|
||||
- TRAVIS_BUILD_STAGE=docker
|
||||
|
||||
# ========================= stage: thrift =======================
|
||||
# ------------------------- phase: cross ------------------------
|
||||
# apache/thrift official PR builds can exceed 50 minutes per job so combine all cross tests
|
||||
- stage: thrift
|
||||
script: build/docker/run.sh
|
||||
if: repo = apache/thrift
|
||||
env:
|
||||
- JOB="Cross Language Tests"
|
||||
- SCRIPT="cross-test.sh"
|
||||
|
||||
# fork based PR builds cannot exceed 50 minutes per job
|
||||
- stage: thrift
|
||||
script: build/docker/run.sh
|
||||
if: repo != apache/thrift
|
||||
env:
|
||||
- JOB="Cross Language Tests (Binary Protocol)"
|
||||
- SCRIPT="cross-test.sh"
|
||||
- BUILD_ARG="-'(binary)'"
|
||||
|
||||
- stage: thrift
|
||||
script: build/docker/run.sh
|
||||
if: repo != apache/thrift
|
||||
env:
|
||||
- JOB="Cross Language Tests (Header, JSON Protocols)"
|
||||
- SCRIPT="cross-test.sh"
|
||||
- BUILD_ARG="-'(header|json)'"
|
||||
|
||||
- stage: thrift
|
||||
script: build/docker/run.sh
|
||||
if: repo != apache/thrift
|
||||
env:
|
||||
- JOB="Cross Language Tests (Compact and Multiplexed Protocols)"
|
||||
- SCRIPT="cross-test.sh"
|
||||
- BUILD_ARG="-'(compact|multiplexed)'"
|
||||
|
||||
# ------------------------- phase: sca --------------------------
|
||||
# QA jobs for code analytics and metrics
|
||||
- stage: thrift
|
||||
script: build/docker/run.sh
|
||||
env:
|
||||
- JOB="Static Code Analysis"
|
||||
- SCRIPT="sca.sh"
|
||||
|
||||
# C and C++ undefined behavior.
|
||||
# A binary crashes if undefined behavior occurs and produces a stack trace.
|
||||
# python is disabled, see: THRIFT-4360
|
||||
- script: build/docker/run.sh
|
||||
env:
|
||||
- JOB="UBSan"
|
||||
- SCRIPT="ubsan.sh"
|
||||
- BUILD_ARG="--without-python --without-py3"
|
||||
|
||||
# ------------------------- phase: autotools --------------------
|
||||
# TODO: Remove them once migrated to CMake
|
||||
- script: build/docker/run.sh
|
||||
env:
|
||||
- JOB="Autotools (Ubuntu Bionic)"
|
||||
- SCRIPT="autotools.sh"
|
||||
|
||||
- script: build/docker/run.sh
|
||||
env:
|
||||
- JOB="Autotools (Ubuntu Xenial)"
|
||||
- DISTRO=ubuntu-xenial
|
||||
- SCRIPT="autotools.sh"
|
||||
|
||||
# ------------------------- phase: cmake ------------------------
|
||||
- script: build/docker/run.sh
|
||||
env:
|
||||
- JOB="CMake"
|
||||
|
||||
# C++ specific options: compiler plug-in, threading model
|
||||
- script: build/docker/run.sh
|
||||
env:
|
||||
- JOB="C++98 (Boost Thread)"
|
||||
- SCRIPT="cmake.sh"
|
||||
- BUILD_LIBS="CPP TESTING TUTORIALS"
|
||||
- BUILD_ARG="-DCMAKE_CXX_STANDARD=98 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DCMAKE_CXX_EXTENSIONS=OFF --DWITH_BOOSTTHREADS=ON -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
|
||||
- BUILD_ENV="-e CC=clang -e CXX=clang++"
|
||||
|
||||
- script: build/docker/run.sh
|
||||
env:
|
||||
- JOB="C++ (Std Thread) and Plugin"
|
||||
- SCRIPT="cmake.sh"
|
||||
- BUILD_LIBS="CPP TESTING TUTORIALS"
|
||||
- BUILD_ARG="-DWITH_PLUGIN=ON -DWITH_STDTHREADS=ON -DWITH_PYTHON=OFF -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_HASKELL=OFF"
|
||||
- BUILD_ENV="-e CC=clang -e CXX=clang++"
|
||||
|
||||
# ------------------------- phase: dist -------------------------
|
||||
- script: build/docker/run.sh
|
||||
env:
|
||||
- JOB="make dist"
|
||||
- SCRIPT="make-dist.sh"
|
||||
|
||||
- script: build/docker/run.sh
|
||||
env:
|
||||
- JOB="Debian Packages"
|
||||
- SCRIPT="dpkg.sh"
|
||||
|
||||
# ------------------------- phase: coverity ---------------------
|
||||
# We build the coverity scan build once monthly using a travis cron job
|
||||
- if: (env(COVERITY_SCAN_NOTIFICATION_EMAIL) IS present) AND (branch IN (master)) AND (type IN (cron))
|
||||
script: build/docker/run.sh
|
||||
env:
|
||||
- JOB="Coverity Scan"
|
||||
- SCRIPT="covscan.sh"
|
||||
|
||||
|
||||
### ------------------------- phase: osx --------------------------
|
||||
# disabled due to the time delays it imposes on build jobs
|
||||
# - os: osx
|
||||
# osx_image: xcode9
|
||||
# script: build/docker/scripts/autotools.sh
|
||||
|
2913
vendor/git.apache.org/thrift.git/CHANGES
generated
vendored
2913
vendor/git.apache.org/thrift.git/CHANGES
generated
vendored
File diff suppressed because it is too large
Load diff
124
vendor/git.apache.org/thrift.git/CMakeLists.txt
generated
vendored
124
vendor/git.apache.org/thrift.git/CMakeLists.txt
generated
vendored
|
@ -1,124 +0,0 @@
|
|||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you 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.
|
||||
#
|
||||
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
# CMake 3.1 supports C++ standards selection with CMAKE_CXX_STANDARD
|
||||
# If you need CMake 3.1+ for Ubuntu 14.04, try
|
||||
# https://launchpad.net/~george-edison55/+archive/ubuntu/cmake-3.x
|
||||
# If you need CMake 3.1+ for debian "jessie", get it from jessie-backports
|
||||
# Otherwise
|
||||
# http://cmake.org
|
||||
|
||||
project("Apache Thrift")
|
||||
|
||||
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_CURRENT_SOURCE_DIR}/build/cmake")
|
||||
|
||||
# TODO: add `git rev-parse --short HEAD`
|
||||
# Read the version information from the Autoconf file
|
||||
file (STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/configure.ac" CONFIGURE_AC REGEX "AC_INIT\\(.*\\)" )
|
||||
|
||||
# The following variable is used in the version.h.in file
|
||||
string(REGEX REPLACE "AC_INIT\\(\\[.*\\], \\[([0-9]+\\.[0-9]+\\.[0-9]+(-dev)?)\\]\\)" "\\1" PACKAGE_VERSION ${CONFIGURE_AC})
|
||||
message(STATUS "Parsed Thrift package version: ${PACKAGE_VERSION}")
|
||||
|
||||
# These are internal to CMake
|
||||
string(REGEX REPLACE "([0-9]+\\.[0-9]+\\.[0-9]+)(-dev)?" "\\1" thrift_VERSION ${PACKAGE_VERSION})
|
||||
string(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" thrift_VERSION_MAJOR ${thrift_VERSION})
|
||||
string(REGEX REPLACE "[0-9]+\\.([0-9])+\\.[0-9]+" "\\1" thrift_VERSION_MINOR ${thrift_VERSION})
|
||||
string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" thrift_VERSION_PATCH ${thrift_VERSION})
|
||||
message(STATUS "Parsed Thrift version: ${thrift_VERSION} (${thrift_VERSION_MAJOR}.${thrift_VERSION_MINOR}.${thrift_VERSION_PATCH})")
|
||||
|
||||
# Some default settings
|
||||
include(DefineCMakeDefaults)
|
||||
|
||||
# Build time options are defined here
|
||||
include(DefineOptions)
|
||||
include(DefineInstallationPaths)
|
||||
|
||||
# Based on the options set some platform specifics
|
||||
include(DefinePlatformSpecifc)
|
||||
|
||||
# Generate the config.h file
|
||||
include(ConfigureChecks)
|
||||
|
||||
# Package it
|
||||
include(CPackConfig)
|
||||
|
||||
|
||||
find_package(Threads)
|
||||
|
||||
include(CTest)
|
||||
if(BUILD_TESTING)
|
||||
message(STATUS "Building with unittests")
|
||||
|
||||
enable_testing()
|
||||
# Define "make check" as alias for "make test"
|
||||
add_custom_target(check COMMAND ctest)
|
||||
else ()
|
||||
message(STATUS "Building without tests")
|
||||
endif ()
|
||||
|
||||
if(BUILD_COMPILER)
|
||||
if(NOT EXISTS ${THRIFT_COMPILER})
|
||||
set(THRIFT_COMPILER $<TARGET_FILE:thrift-compiler>)
|
||||
endif()
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/compiler/cpp)
|
||||
elseif(EXISTS ${THRIFT_COMPILER})
|
||||
add_executable(thrift-compiler IMPORTED)
|
||||
set_property(TARGET thrift-compiler PROPERTY IMPORTED_LOCATION ${THRIFT_COMPILER})
|
||||
endif()
|
||||
|
||||
if(BUILD_CPP)
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lib/cpp)
|
||||
if(BUILD_TUTORIALS)
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tutorial/cpp)
|
||||
endif()
|
||||
if(BUILD_TESTING)
|
||||
if(WITH_LIBEVENT AND WITH_ZLIB AND WITH_OPENSSL)
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/test/cpp)
|
||||
else()
|
||||
message(WARNING "libevent and/or ZLIB and/or OpenSSL not found or disabled; will not build some tests")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(BUILD_C_GLIB)
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lib/c_glib)
|
||||
endif()
|
||||
|
||||
if(BUILD_JAVA)
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lib/java)
|
||||
endif()
|
||||
|
||||
if(BUILD_PYTHON)
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lib/py)
|
||||
if(BUILD_TESTING)
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/test/py)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(BUILD_HASKELL)
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lib/hs)
|
||||
if(BUILD_TESTING)
|
||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/test/hs)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
PRINT_CONFIG_SUMMARY()
|
116
vendor/git.apache.org/thrift.git/CONTRIBUTING.md
generated
vendored
116
vendor/git.apache.org/thrift.git/CONTRIBUTING.md
generated
vendored
|
@ -1,116 +0,0 @@
|
|||
# How to Contribute #
|
||||
|
||||
Thank you for your interest in contributing to the Apache Thrift project! Information on why and how to contribute is available on the Apache Software Foundation (ASF) web site. In particular, we recommend the following to become acquainted with Apache Contributions:
|
||||
|
||||
* [Contributors Tech Guide](http://www.apache.org/dev/contributors)
|
||||
* [Get involved!](http://www.apache.org/foundation/getinvolved.html)
|
||||
* [Legal aspects on Submission of Contributions (Patches)](http://www.apache.org/licenses/LICENSE-2.0.html#contributions)
|
||||
|
||||
## GitHub pull requests ##
|
||||
|
||||
This is the preferred method of submitting changes. When you submit a pull request through github,
|
||||
it activates the continuous integration (CI) build systems at Appveyor and Travis to build your changesxi
|
||||
on a variety of Linux and Windows configurations and run all the test suites. Follow these requirements
|
||||
for a successful pull request:
|
||||
|
||||
1. All code changes require an [Apache Jira THRIFT Issue](http://issues.apache.org/jira/browse/THRIFT) ticket.
|
||||
|
||||
1. All pull requests should contain a single commit per issue, or we will ask you to squash it.
|
||||
1. The pull request title must begin with the Jira THRIFT ticket identifier, for example:
|
||||
|
||||
THRIFT-9999: an example pull request title
|
||||
|
||||
1. Commit messages must follow this pattern for code changes (deviations will not be merged):
|
||||
|
||||
THRIFT-9999: [summary of fix, one line if possible]
|
||||
Client: [language(s) affected, comma separated, use lib/ directory names please]
|
||||
|
||||
Instructions:
|
||||
|
||||
1. Create a fork in your GitHub account of http://github.com/apache/thrift
|
||||
1. Clone the fork to your development system.
|
||||
1. Create a branch for your changes (best practice is issue as branch name, e.g. THRIFT-9999).
|
||||
1. Modify the source to include the improvement/bugfix, and:
|
||||
|
||||
* Remember to provide *tests* for all submitted changes!
|
||||
* Use test-driven development (TDD): add a test that will isolate the bug *before* applying the change that fixes it.
|
||||
* Verify that you follow [Thrift Coding Standards](/docs/coding_standards) (you can run 'make style', which ensures proper format for some languages).
|
||||
* [*optional*] Verify that your change works on other platforms by adding a GitHub service hook to [Travis CI](http://docs.travis-ci.com/user/getting-started/#Step-one%3A-Sign-in) and [AppVeyor](http://www.appveyor.com/docs). You can use this technique to run the Thrift CI jobs in your account to check your changes before they are made public. Every GitHub pull request into Thrift will run the full CI build and test suite on your changes.
|
||||
|
||||
1. Squash your changes to a single commit. This maintains clean change history.
|
||||
1. Commit and push changes to your branch (please use issue name and description as commit title, e.g. "THRIFT-9999: make it perfect"), with the affected languages on the next line of the description.
|
||||
1. Use GitHub to create a pull request going from your branch to apache:master. Ensure that the Jira ticket number is at the beginning of the title of your pull request, same as the commit title.
|
||||
1. Wait for other contributors or committers to review your new addition, and for a CI build to complete.
|
||||
1. Wait for a committer to commit your patch. You can nudge the committers if necessary by sending a message to the [Apache Thrift mailing list](https://thrift.apache.org/mailing).
|
||||
|
||||
## If you want to build the project locally ##
|
||||
|
||||
For Windows systems, see our detailed instructions on the [CMake README](/build/cmake/README.md).
|
||||
|
||||
For Windows Native C++ builds, see our detailed instructions on the [WinCPP README](/build/wincpp/README.md).
|
||||
|
||||
For unix systems, see our detailed instructions on the [Docker README](/build/docker/README.md).
|
||||
|
||||
## If you want to review open issues... ##
|
||||
|
||||
1. Review the [GitHub Pull Request Backlog](https://github.com/apache/thrift/pulls). Code reviews are open to all.
|
||||
2. Review the [Jira issue tracker](http://issues.apache.org/jira/browse/THRIFT). You can search for tickets relating to languages you are interested in or currently using with thrift, for example a Jira search (Issues -> Search For Issues) query of ``project = THRIFT AND component in ("Erlang - Library") and status not in (resolved, closed)`` will locate all the open Erlang Library issues.
|
||||
|
||||
## If you discovered a defect... ##
|
||||
|
||||
1. Check to see if the issue is already in the [Jira issue tracker](http://issues.apache.org/jira/browse/THRIFT).
|
||||
1. If not, create a ticket describing the change you're proposing in the Jira issue tracker.
|
||||
1. Contribute your code changes using the GitHub pull request method:
|
||||
|
||||
## Contributing via Patch ##
|
||||
|
||||
Some changes do not require a build, for example in documentation. For changes that are not code or build related, you can submit a patch on Jira for review. To create a patch from changes in your local directory:
|
||||
|
||||
git diff > ../THRIFT-NNNN.patch
|
||||
|
||||
then wait for contributors or committers to review your changes, and then for a committer to apply your patch.
|
||||
|
||||
## GitHub recipes for Pull Requests ##
|
||||
|
||||
Sometimes commmitters may ask you to take actions in your pull requests. Here are some recipes that will help you accomplish those requests. These examples assume you are working on Jira issue THRIFT-9999. You should also be familiar with the [upstream](https://help.github.com/articles/syncing-a-fork/) repository concept.
|
||||
|
||||
### Squash your changes ###
|
||||
|
||||
If you have not submitted a pull request yet, or if you have not yet rebased your existing pull request, you can squash all your commits down to a single commit. This makes life easier for the committers. If your pull request on GitHub has more than one commit, you should do this.
|
||||
|
||||
1. Use the command ``git log`` to identify how many commits you made since you began.
|
||||
2. Use the command ``git rebase -i HEAD~N`` where N is the number of commits.
|
||||
3. Leave "pull" in the first line.
|
||||
4. Change all other lines from "pull" to "fixup".
|
||||
5. All your changes are now in a single commit.
|
||||
|
||||
If you already have a pull request outstanding, you will need to do a "force push" to overwrite it since you changed your commit history:
|
||||
|
||||
git push -u origin THRIFT-9999 --force
|
||||
|
||||
A more detailed walkthrough of a squash can be found at [Git Ready](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html).
|
||||
|
||||
### Rebase your pull request ###
|
||||
|
||||
If your pull request has a conflict with master, it needs to be rebased:
|
||||
|
||||
git checkout THRIFT-9999
|
||||
git rebase upstream master
|
||||
(resolve any conflicts, make sure it builds)
|
||||
git push -u origin THRIFT-9999 --force
|
||||
|
||||
### Fix a bad merge ###
|
||||
|
||||
If your pull request contains commits that are not yours, then you should use the following technique to fix the bad merge in your branch:
|
||||
|
||||
git checkout master
|
||||
git pull upstream master
|
||||
git checkout -b THRIFT-9999-take-2
|
||||
git cherry-pick ...
|
||||
(pick only your commits from your original pull request in ascending chronological order)
|
||||
squash your changes to a single commit if there is more than one (see above)
|
||||
git push -u origin THRIFT-9999-take-2:THRIFT-9999
|
||||
|
||||
This procedure will apply only your commits in order to the current master, then you will squash them to a single commit, and then you force push your local THRIFT-9999-take-2 into remote THRIFT-9999 which represents your pull request, replacing all the commits with the new one.
|
||||
|
||||
|
355
vendor/git.apache.org/thrift.git/LANGUAGES.md
generated
vendored
355
vendor/git.apache.org/thrift.git/LANGUAGES.md
generated
vendored
|
@ -1,355 +0,0 @@
|
|||
# Apache Thrift Language Support #
|
||||
|
||||
Last Modified: 2018-12-17
|
||||
|
||||
Guidance For: 0.12.0 or later
|
||||
|
||||
Thrift supports many programming languages and has an impressive test suite that exercises most of the languages, protocols, and transports that represents a matrix of thousands of possible combinations. Each language typically has a minimum required version as well as support libraries - some mandatory and some optional. All of this information is provided below to help you assess whether you can use Apache Thrift with your project. Obviously this is a complex matrix to maintain and may not be correct in all cases - if you spot an error please inform the developers using the mailing list.
|
||||
|
||||
Apache Thrift has a choice of two build systems. The `autoconf` build system is the most complete build and is used to build all supported languages. The `cmake` build system has been designated by the project to replace `autoconf` however this transition will take quite some time to complete.
|
||||
|
||||
The Language/Library Levels indicate the minimum and maximum versions that are used in the [continuous integration environments](build/docker/README.md) (Appveyor, Travis) for Apache Thrift. Other language levels may be supported for each language, however tested less thoroughly; check the README file inside each lib directory for additional details. Note that while a language may contain support for protocols, transports, and servers, the extent to which each is tested as part of the overall build process varies. The definitive integration test for the project is called the "cross" test which executes a test matrix with clients and servers communicating across languages.
|
||||
|
||||
<table style="font-size: 60%; padding: 1px;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th rowspan=2>Language</th>
|
||||
<th rowspan=2 align=center>Since</th>
|
||||
<th colspan=2 align=center>Build Systems</th>
|
||||
<th colspan=2 align=center>Lang/Lib Levels (Tested)</th>
|
||||
<th colspan=6 align=center>Low-Level Transports</th>
|
||||
<th colspan=3 align=center>Transport Wrappers</th>
|
||||
<th colspan=4 align=center>Protocols</th>
|
||||
<th colspan=5 align=center>Servers</th>
|
||||
<th rowspan=2>Open Issues</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Build Systems ---------><th>autoconf</th><th>cmake</th>
|
||||
<!-- Lang/Lib Levels -------><th>Min</th><th>Max</th>
|
||||
<!-- Low-Level Transports --><th><a href="https://en.wikipedia.org/wiki/Unix_domain_socket">Domain</a></th><th> File </th><th>Memory</th><th> Pipe </th><th>Socket</th><th> TLS </th>
|
||||
<!-- Transport Wrappers ----><th>Framed</th><th> http </th><th> zlib </th>
|
||||
<!-- Protocols -------------><th><a href="doc/specs/thrift-binary-protocol.md">Binary</a></th><th><a href="doc/specs/thrift-compact-protocol.md">Compact</a></th><th> JSON </th><th>Multiplex</th>
|
||||
<!-- Servers ---------------><th>Forking</th><th>Nonblocking</th><th>Simple</th><th>Threaded</th><th>ThreadPool</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/as3/README.md">ActionScript</a></td>
|
||||
<!-- Since -----------------><td>0.3.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td colspan=2>ActionScript 3</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12313722">ActionScript</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/c_glib/README.md">C (glib)</a></td>
|
||||
<!-- Since -----------------><td>0.6.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Language Levels -------><td>2.48.2</td><td>2.54.0</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12313854">C (glib)</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/cpp/README.md">C++</a></td>
|
||||
<!-- Since -----------------><td>0.2.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Language Levels -------><td colspan=2>C++98</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12312313">C++</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/csharp/README.md">C#</a></td>
|
||||
<!-- Since -----------------><td>0.2.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td>.NET 3.5 / mono 3.2.8.0</td><td>.NET 4.6.1 / mono 4.6.2.7</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12312362">C# (.NET)</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/cocoa/README.md">Cocoa</a></td>
|
||||
<!-- Since -----------------><td>0.2.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td colspan=2>unknown</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12312398">Cocoa</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/cl/README.md">Common Lisp</a></td>
|
||||
<!-- Since -----------------><td>0.12.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td>SBCL 1.4.5</td><td>SBCL 1.4.9</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT-82">Common Lisp</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/d/README.md">Dlang</a></td>
|
||||
<!-- Since -----------------><td>0.9.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td>2.075.1</td><td>2.081.0</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12317904">D</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/dart/README.md">Dart</a></td>
|
||||
<!-- Since -----------------><td>0.10.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td>1.22.1</td><td>1.24.3</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12328006">Dart</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/delphi/README.md">Delphi</a></td>
|
||||
<!-- Since -----------------><td>0.8.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td>2010</td><td>unknown</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12316601">Delphi</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/netcore/README.md">.NET Core</a></td>
|
||||
<!-- Since -----------------><td>0.11.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td colspan=2>2.1.4</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12331176">.NET Core</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/erl/README.md">Erlang</a></td>
|
||||
<!-- Since -----------------><td>0.3.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td>18.3</td><td>20.0.4</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12312390">Erlang</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/go/README.md">Go</a></td>
|
||||
<!-- Since -----------------><td>0.7.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td>1.7.6</td><td>1.10.3</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12314307">Go</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/hs/README.md">Haskell</a></td>
|
||||
<!-- Since -----------------><td>0.5.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Language Levels -------><td>7.10.3</td><td>8.0.2</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12312704">Haskell</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/haxe/README.md">Haxe</a></td>
|
||||
<!-- Since -----------------><td>0.9.3</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td>3.2.1</td><td>3.4.4</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12324347">Haxe</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/java/README.md">Java (SE)</a></td>
|
||||
<!-- Since -----------------><td>0.2.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Language Levels -------><td colspan=2>1.8.0_151</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12312314">Java SE</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/javame/README.md">Java (ME)</a></td>
|
||||
<!-- Since -----------------><td>0.5.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td colspan=2>unknown</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12313759">Java ME</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/js/README.md">Javascript</a></td>
|
||||
<!-- Since -----------------><td>0.3.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td colspan=2>unknown</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12313418">Javascript</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/lua/README.md">Lua</a></td>
|
||||
<!-- Since -----------------><td>0.9.2</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td>5.1.5</td><td>5.2.4</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12322659">Lua</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/nodejs/README.md">node.js</a></td>
|
||||
<!-- Since -----------------><td>0.6.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td>6.x</td><td>8.11.3</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12314320">node.js</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/nodets/README.md">node.ts</a></td>
|
||||
<!-- Since -----------------><td>0.12.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td>3.1.6</td><td></td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20THRIFT%20AND%20resolution%20%3D%20Unresolved%20and%20Component%20in%20(%22TypeScript%20-%20Library%22)%20ORDER%20BY%20priority%20DESC%2C%20updated%20DESC">node.ts</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/ocaml/README.md">OCaml</a></td>
|
||||
<!-- Since -----------------><td>0.2.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td colspan=2>4.04.0</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12313660">OCaml</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/perl/README.md">Perl</a></td>
|
||||
<!-- Since -----------------><td>0.2.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td>5.22.1</td><td>5.26.0</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12312312">Perl</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/php/README.md">PHP</a></td>
|
||||
<!-- Since -----------------><td>0.2.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td>7.0.22</td><td>7.1.8</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12312431">PHP</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/py/README.md">Python</a></td>
|
||||
<!-- Since -----------------><td>0.2.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Language Levels -------><td>2.7.12, 3.5.2</td><td>2.7.14, 3.6.3</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12312315">Python</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/rb/README.md">Ruby</a></td>
|
||||
<!-- Since -----------------><td>0.2.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td>2.3.1p112</td><td>2.3.3p222</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12312316">Ruby</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/rs/README.md">Rust</a></td>
|
||||
<!-- Since -----------------><td>0.11.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td>1.17.0</td><td>1.21.0</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12331420">Rust</a></td>
|
||||
</tr>
|
||||
<tr align=center>
|
||||
<td align=left><a href="lib/st/README.md">Smalltalk</a></td>
|
||||
<!-- Since -----------------><td>0.2.0</td>
|
||||
<!-- Build Systems ---------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Language Levels -------><td colspan=2>unknown</td>
|
||||
<!-- Low-Level Transports --><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Transport Wrappers ----><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Protocols -------------><td><img src="doc/images/cgrn.png" alt="Yes"/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<!-- Servers ---------------><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td><td><img src="doc/images/cred.png" alt=""/></td>
|
||||
<td align=left><a href="https://issues.apache.org/jira/browse/THRIFT/component/12313861">Smalltalk</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<th rowspan=2>Language</th>
|
||||
<th rowspan=2 align=center>Since</th>
|
||||
<!-- Build Systems ---------><th>autoconf</th><th>cmake</th>
|
||||
<!-- Lang/Lib Levels -------><th>Min</th><th>Max</th>
|
||||
<!-- Low-Level Transports --><th><a href="https://en.wikipedia.org/wiki/Unix_domain_socket">Domain</a></th></th><th> File </th><th>Memory</th><th> Pipe </th><th>Socket</th><th> TLS </th>
|
||||
<!-- Transport Wrappers ----><th>Framed</th><th> http </th><th> zlib </th>
|
||||
<!-- Protocols -------------><th><a href="doc/specs/thrift-binary-protocol.md">Binary</a></th><th><a href="doc/specs/thrift-compact-protocol.md">Compact</a></th><th> JSON </th><th>Multiplex</th>
|
||||
<!-- Servers ---------------><th>Forking</th><th>Nonblocking</th><th>Simple</th><th>Threaded</th><th>ThreadPool</th>
|
||||
<th rowspan=2>Open Issues</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan=2 align=center>Build Systems</th>
|
||||
<th colspan=2 align=center>Lang/Lib Levels (Tested)</th>
|
||||
<th colspan=6 align=center>Low-Level Transports</th>
|
||||
<th colspan=3 align=center>Transport Wrappers</th>
|
||||
<th colspan=4 align=center>Protocols</th>
|
||||
<th colspan=5 align=center>Servers</th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
239
vendor/git.apache.org/thrift.git/LICENSE
generated
vendored
239
vendor/git.apache.org/thrift.git/LICENSE
generated
vendored
|
@ -1,239 +0,0 @@
|
|||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
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.
|
||||
|
||||
--------------------------------------------------
|
||||
SOFTWARE DISTRIBUTED WITH THRIFT:
|
||||
|
||||
The Apache Thrift software includes a number of subcomponents with
|
||||
separate copyright notices and license terms. Your use of the source
|
||||
code for the these subcomponents is subject to the terms and
|
||||
conditions of the following licenses.
|
||||
|
||||
--------------------------------------------------
|
||||
Portions of the following files are licensed under the MIT License:
|
||||
|
||||
lib/erl/src/Makefile.am
|
||||
|
||||
Please see doc/otp-base-license.txt for the full terms of this license.
|
||||
|
||||
--------------------------------------------------
|
||||
For the aclocal/ax_boost_base.m4 and contrib/fb303/aclocal/ax_boost_base.m4 components:
|
||||
|
||||
# Copyright (c) 2007 Thomas Porschberg <thomas@randspringer.de>
|
||||
#
|
||||
# Copying and distribution of this file, with or without
|
||||
# modification, are permitted in any medium without royalty provided
|
||||
# the copyright notice and this notice are preserved.
|
||||
|
||||
--------------------------------------------------
|
||||
For the lib/nodejs/lib/thrift/json_parse.js:
|
||||
|
||||
/*
|
||||
json_parse.js
|
||||
2015-05-02
|
||||
Public Domain.
|
||||
NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
|
||||
|
||||
*/
|
||||
(By Douglas Crockford <douglas@crockford.com>)
|
||||
--------------------------------------------------
|
135
vendor/git.apache.org/thrift.git/Makefile.am
generated
vendored
135
vendor/git.apache.org/thrift.git/Makefile.am
generated
vendored
|
@ -1,135 +0,0 @@
|
|||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you 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.
|
||||
#
|
||||
|
||||
ACLOCAL_AMFLAGS = -I ./aclocal
|
||||
|
||||
if WITH_PLUGIN
|
||||
# To enable bootstrap, build order is lib/cpp -> compiler -> others
|
||||
SUBDIRS = lib/cpp compiler/cpp lib
|
||||
if WITH_TESTS
|
||||
SUBDIRS += lib/cpp/test
|
||||
endif
|
||||
else
|
||||
SUBDIRS = compiler/cpp lib
|
||||
endif
|
||||
|
||||
if WITH_TESTS
|
||||
SUBDIRS += test
|
||||
endif
|
||||
|
||||
if WITH_TUTORIAL
|
||||
SUBDIRS += tutorial
|
||||
endif
|
||||
|
||||
dist-hook:
|
||||
find $(distdir) -type f \( -iname ".DS_Store" -or -iname "._*" -or -iname ".gitignore" \) | xargs rm -rf
|
||||
find $(distdir) -type d \( -iname ".deps" -or -iname ".libs" \) | xargs rm -rf
|
||||
find $(distdir) -type d \( -iname ".svn" -or -iname ".git" \) | xargs rm -rf
|
||||
|
||||
print-version:
|
||||
@echo $(PACKAGE_VERSION)
|
||||
|
||||
.PHONY: precross cross
|
||||
precross-%: all
|
||||
$(MAKE) -C $* precross
|
||||
precross: all precross-test precross-lib
|
||||
|
||||
empty :=
|
||||
space := $(empty) $(empty)
|
||||
comma := ,
|
||||
|
||||
CROSS_LANGS = @MAYBE_CPP@ @MAYBE_C_GLIB@ @MAYBE_CL@ @MAYBE_D@ @MAYBE_JAVA@ @MAYBE_CSHARP@ @MAYBE_PYTHON@ @MAYBE_PY3@ @MAYBE_RUBY@ @MAYBE_HASKELL@ @MAYBE_PERL@ @MAYBE_PHP@ @MAYBE_GO@ @MAYBE_NODEJS@ @MAYBE_DART@ @MAYBE_ERLANG@ @MAYBE_LUA@ @MAYBE_RS@ @MAYBE_DOTNETCORE@ @MAYBE_NODETS@
|
||||
CROSS_LANGS_COMMA_SEPARATED = $(subst $(space),$(comma),$(CROSS_LANGS))
|
||||
|
||||
if WITH_PY3
|
||||
CROSS_PY=$(PYTHON3)
|
||||
else
|
||||
CROSS_PY=$(PYTHON)
|
||||
endif
|
||||
|
||||
if WITH_PYTHON
|
||||
crossfeature: precross
|
||||
$(CROSS_PY) test/test.py --retry-count 5 --features .* --skip-known-failures --server $(CROSS_LANGS_COMMA_SEPARATED)
|
||||
else
|
||||
# feature test needs python build
|
||||
crossfeature:
|
||||
endif
|
||||
|
||||
cross-%: precross crossfeature
|
||||
$(CROSS_PY) test/test.py --retry-count 5 --skip-known-failures --server $(CROSS_LANGS_COMMA_SEPARATED) --client $(CROSS_LANGS_COMMA_SEPARATED) --regex "$*"
|
||||
|
||||
cross: cross-.*
|
||||
|
||||
TIMES = 1 2 3
|
||||
fail: precross
|
||||
$(CROSS_PY) test/test.py || true
|
||||
$(CROSS_PY) test/test.py --update-expected-failures=overwrite
|
||||
$(foreach var,$(TIMES),test/test.py -s || true;test/test.py --update-expected-failures=merge;)
|
||||
|
||||
codespell_skip_files = \
|
||||
*.jar \
|
||||
*.class \
|
||||
*.so \
|
||||
*.a \
|
||||
*.la \
|
||||
*.o \
|
||||
*.p12 \
|
||||
*OCamlMakefile \
|
||||
.keystore \
|
||||
.truststore \
|
||||
CHANGES \
|
||||
config.sub \
|
||||
configure \
|
||||
depcomp \
|
||||
libtool.m4 \
|
||||
output.* \
|
||||
rebar \
|
||||
thrift
|
||||
|
||||
skipped_files = $(subst $(space),$(comma),$(codespell_skip_files))
|
||||
|
||||
style-local:
|
||||
codespell --write-changes --skip=$(skipped_files) --disable-colors
|
||||
|
||||
EXTRA_DIST = \
|
||||
.clang-format \
|
||||
.editorconfig \
|
||||
.travis.yml \
|
||||
.rustfmt.toml \
|
||||
.dockerignore \
|
||||
appveyor.yml \
|
||||
bower.json \
|
||||
build \
|
||||
bootstrap.sh \
|
||||
cleanup.sh \
|
||||
CMakeLists.txt \
|
||||
composer.json \
|
||||
contrib \
|
||||
CONTRIBUTING.md \
|
||||
debian \
|
||||
doc \
|
||||
doap.rdf \
|
||||
package.json \
|
||||
sonar-project.properties \
|
||||
LANGUAGES.md \
|
||||
LICENSE \
|
||||
CHANGES \
|
||||
NOTICE \
|
||||
README.md \
|
||||
Thrift.podspec
|
5
vendor/git.apache.org/thrift.git/NOTICE
generated
vendored
5
vendor/git.apache.org/thrift.git/NOTICE
generated
vendored
|
@ -1,5 +0,0 @@
|
|||
Apache Thrift
|
||||
Copyright 2006-2017 The Apache Software Foundation.
|
||||
|
||||
This product includes software developed at
|
||||
The Apache Software Foundation (http://www.apache.org/).
|
192
vendor/git.apache.org/thrift.git/README.md
generated
vendored
192
vendor/git.apache.org/thrift.git/README.md
generated
vendored
|
@ -1,192 +0,0 @@
|
|||
Apache Thrift
|
||||
=============
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
Thrift is a lightweight, language-independent software stack with an
|
||||
associated code generation mechanism for point-to-point RPC. Thrift provides
|
||||
clean abstractions for data transport, data serialization, and application
|
||||
level processing. The code generation system takes a simple definition
|
||||
language as input and generates code across programming languages that
|
||||
uses the abstracted stack to build interoperable RPC clients and servers.
|
||||
|
||||

|
||||
|
||||
Thrift makes it easy for programs written in different programming
|
||||
languages to share data and call remote procedures. With support
|
||||
for [25 programming languages](LANGUAGES.md), chances are Thrift
|
||||
supports the languages that you currently use.
|
||||
|
||||
Thrift is specifically designed to support non-atomic version changes
|
||||
across client and server code.
|
||||
|
||||
For more details on Thrift's design and implementation, see the Thrift
|
||||
whitepaper included in this distribution, or at the README.md file
|
||||
in your particular subdirectory of interest.
|
||||
|
||||
Status
|
||||
======
|
||||
|
||||
| Branch | Travis | Appveyor | Coverity Scan | codecov.io | Website |
|
||||
| :----- | :----- | :------- | :------------ | :--------- | :------ |
|
||||
| [`master`](https://github.com/apache/thrift/tree/master) | [](https://travis-ci.org/apache/thrift) | [](https://ci.appveyor.com/project/ApacheSoftwareFoundation/thrift/history) | [](https://scan.coverity.com/projects/thrift) | | [](https://thrift.apache.org/) |
|
||||
|
||||
Releases
|
||||
========
|
||||
|
||||
Thrift does not maintain a specific release calendar at this time.
|
||||
|
||||
We strive to release twice yearly. Download the [current release](http://thrift.apache.org/download).
|
||||
|
||||
License
|
||||
=======
|
||||
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you 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.
|
||||
|
||||
Project Hierarchy
|
||||
=================
|
||||
|
||||
thrift/
|
||||
|
||||
compiler/
|
||||
|
||||
Contains the Thrift compiler, implemented in C++.
|
||||
|
||||
lib/
|
||||
|
||||
Contains the Thrift software library implementation, subdivided by
|
||||
language of implementation.
|
||||
|
||||
cpp/
|
||||
go/
|
||||
java/
|
||||
php/
|
||||
py/
|
||||
rb/
|
||||
...
|
||||
|
||||
test/
|
||||
|
||||
Contains sample Thrift files and test code across the target programming
|
||||
languages.
|
||||
|
||||
tutorial/
|
||||
|
||||
Contains a basic tutorial that will teach you how to develop software
|
||||
using Thrift.
|
||||
|
||||
Development
|
||||
===========
|
||||
|
||||
To build the same way Travis CI builds the project you should use docker.
|
||||
We have [comprehensive building instructions for docker](build/docker/README.md).
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
See http://thrift.apache.org/docs/install for a list of build requirements (may be stale). Alternatively see the docker build environments for a list of prerequisites.
|
||||
|
||||
Resources
|
||||
=========
|
||||
|
||||
More information about Thrift can be obtained on the Thrift webpage at:
|
||||
|
||||
http://thrift.apache.org
|
||||
|
||||
Acknowledgments
|
||||
===============
|
||||
|
||||
Thrift was inspired by pillar, a lightweight RPC tool written by Adam D'Angelo,
|
||||
and also by Google's protocol buffers.
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
If you are building from the first time out of the source repository, you will
|
||||
need to generate the configure scripts. (This is not necessary if you
|
||||
downloaded a tarball.) From the top directory, do:
|
||||
|
||||
./bootstrap.sh
|
||||
|
||||
Once the configure scripts are generated, thrift can be configured.
|
||||
From the top directory, do:
|
||||
|
||||
./configure
|
||||
|
||||
You may need to specify the location of the boost files explicitly.
|
||||
If you installed boost in /usr/local, you would run configure as follows:
|
||||
|
||||
./configure --with-boost=/usr/local
|
||||
|
||||
Note that by default the thrift C++ library is typically built with debugging
|
||||
symbols included. If you want to customize these options you should use the
|
||||
CXXFLAGS option in configure, as such:
|
||||
|
||||
./configure CXXFLAGS='-g -O2'
|
||||
./configure CFLAGS='-g -O2'
|
||||
./configure CPPFLAGS='-DDEBUG_MY_FEATURE'
|
||||
|
||||
To enable gcov required options -fprofile-arcs -ftest-coverage enable them:
|
||||
|
||||
./configure --enable-coverage
|
||||
|
||||
Run ./configure --help to see other configuration options
|
||||
|
||||
Please be aware that the Python library will ignore the --prefix option
|
||||
and just install wherever Python's distutils puts it (usually along
|
||||
the lines of /usr/lib/pythonX.Y/site-packages/). If you need to control
|
||||
where the Python modules are installed, set the PY_PREFIX variable.
|
||||
(DESTDIR is respected for Python and C++.)
|
||||
|
||||
Make thrift:
|
||||
|
||||
make
|
||||
|
||||
From the top directory, become superuser and do:
|
||||
|
||||
make install
|
||||
|
||||
Note that some language packages must be installed manually using build tools
|
||||
better suited to those languages (at the time of this writing, this applies
|
||||
to Java, Ruby, PHP).
|
||||
|
||||
Look for the README.md file in the lib/<language>/ folder for more details on the
|
||||
installation of each language library package.
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
There are a large number of client library tests that can all be run
|
||||
from the top-level directory.
|
||||
|
||||
make -k check
|
||||
|
||||
This will make all of the libraries (as necessary), and run through
|
||||
the unit tests defined in each of the client libraries. If a single
|
||||
language fails, the make check will continue on and provide a synopsis
|
||||
at the end.
|
||||
|
||||
To run the cross-language test suite, please run:
|
||||
|
||||
make cross
|
||||
|
||||
This will run a set of tests that use different language clients and
|
||||
servers.
|
||||
|
||||
|
16
vendor/git.apache.org/thrift.git/Thrift-swift3.podspec
generated
vendored
16
vendor/git.apache.org/thrift.git/Thrift-swift3.podspec
generated
vendored
|
@ -1,16 +0,0 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.name = "Thrift-swift3"
|
||||
s.version = "0.12.0"
|
||||
s.summary = "Apache Thrift is a lightweight, language-independent software stack with an associated code generation mechanism for RPC."
|
||||
s.description = <<-DESC
|
||||
The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages.
|
||||
DESC
|
||||
s.homepage = "http://thrift.apache.org"
|
||||
s.license = { :type => 'Apache License, Version 2.0', :url => 'https://www.apache.org/licenses/LICENSE-2.0' }
|
||||
s.author = { "Apache Thrift Developers" => "dev@thrift.apache.org" }
|
||||
s.ios.deployment_target = '9.0'
|
||||
s.osx.deployment_target = '10.10'
|
||||
s.requires_arc = true
|
||||
s.source = { :git => "https://github.com/apache/thrift.git", :tag => "0.12.0" }
|
||||
s.source_files = "lib/swift/Sources/*.swift"
|
||||
end
|
18
vendor/git.apache.org/thrift.git/Thrift.podspec
generated
vendored
18
vendor/git.apache.org/thrift.git/Thrift.podspec
generated
vendored
|
@ -1,18 +0,0 @@
|
|||
Pod::Spec.new do |s|
|
||||
s.name = "Thrift"
|
||||
s.version = "0.12.0"
|
||||
s.summary = "Apache Thrift is a lightweight, language-independent software stack with an associated code generation mechanism for RPC."
|
||||
s.description = <<-DESC
|
||||
The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages.
|
||||
DESC
|
||||
s.homepage = "http://thrift.apache.org"
|
||||
s.license = { :type => 'Apache License, Version 2.0', :url => 'https://www.apache.org/licenses/LICENSE-2.0' }
|
||||
s.author = { "Apache Thrift Developers" => "dev@thrift.apache.org" }
|
||||
s.requires_arc = true
|
||||
s.ios.deployment_target = '7.0'
|
||||
s.osx.deployment_target = '10.8'
|
||||
s.ios.framework = 'CFNetwork'
|
||||
s.osx.framework = 'CoreServices'
|
||||
s.source = { :git => "https://github.com/apache/thrift.git", :tag => "0.12.0" }
|
||||
s.source_files = 'lib/cocoa/src/**/*.{h,m,swift}'
|
||||
end
|
54
vendor/git.apache.org/thrift.git/aclocal/ac_prog_bison.m4
generated
vendored
54
vendor/git.apache.org/thrift.git/aclocal/ac_prog_bison.m4
generated
vendored
|
@ -1,54 +0,0 @@
|
|||
dnl
|
||||
dnl Check Bison version
|
||||
dnl AC_PROG_BISON([MIN_VERSION=2.4])
|
||||
dnl
|
||||
dnl Will define BISON_USE_PARSER_H_EXTENSION if Automake is < 1.11
|
||||
dnl for use with .h includes.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AC_PROG_BISON], [
|
||||
if test "x$1" = "x" ; then
|
||||
bison_required_version="2.4"
|
||||
else
|
||||
bison_required_version="$1"
|
||||
fi
|
||||
|
||||
AC_CHECK_PROG(have_prog_bison, [bison], [yes],[no])
|
||||
|
||||
AC_DEFINE_UNQUOTED([BISON_VERSION], [0.0], [Bison version if bison is not available])
|
||||
|
||||
#Do not use *.h extension for parser header files, use newer *.hh
|
||||
bison_use_parser_h_extension=false
|
||||
|
||||
if test "$have_prog_bison" = "yes" ; then
|
||||
AC_MSG_CHECKING([for bison version >= $bison_required_version])
|
||||
bison_version=`bison --version | head -n 1 | cut '-d ' -f 4`
|
||||
AC_DEFINE_UNQUOTED([BISON_VERSION], [$bison_version], [Defines bison version])
|
||||
if test "$bison_version" \< "$bison_required_version" ; then
|
||||
BISON=:
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([Bison version $bison_required_version or higher must be installed on the system!])
|
||||
else
|
||||
AC_MSG_RESULT([yes])
|
||||
BISON=bison
|
||||
AC_SUBST(BISON)
|
||||
|
||||
#Verify automake version 1.11 headers for yy files are .h, > 1.12 uses .hh
|
||||
automake_version=`automake --version | head -n 1 | cut '-d ' -f 4`
|
||||
AC_DEFINE_UNQUOTED([AUTOMAKE_VERSION], [$automake_version], [Defines automake version])
|
||||
|
||||
if test "$automake_version" \< "1.12" ; then
|
||||
#Use *.h extension for parser header file
|
||||
bison_use_parser_h_extension=true
|
||||
echo "Automake version < 1.12"
|
||||
AC_DEFINE([BISON_USE_PARSER_H_EXTENSION], [1], [Use *.h extension for parser header file])
|
||||
fi
|
||||
fi
|
||||
else
|
||||
BISON=:
|
||||
AC_MSG_RESULT([NO])
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL([BISON_USE_PARSER_H_EXTENSION], [test x$bison_use_parser_h_extension = xtrue])
|
||||
AC_SUBST(BISON)
|
||||
])
|
301
vendor/git.apache.org/thrift.git/aclocal/ax_boost_base.m4
generated
vendored
301
vendor/git.apache.org/thrift.git/aclocal/ax_boost_base.m4
generated
vendored
|
@ -1,301 +0,0 @@
|
|||
# ===========================================================================
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_boost_base.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_BOOST_BASE([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Test for the Boost C++ libraries of a particular version (or newer)
|
||||
#
|
||||
# If no path to the installed boost library is given the macro searchs
|
||||
# under /usr, /usr/local, /opt and /opt/local and evaluates the
|
||||
# $BOOST_ROOT environment variable. Further documentation is available at
|
||||
# <http://randspringer.de/boost/index.html>.
|
||||
#
|
||||
# This macro calls:
|
||||
#
|
||||
# AC_SUBST(BOOST_CPPFLAGS) / AC_SUBST(BOOST_LDFLAGS)
|
||||
#
|
||||
# And sets:
|
||||
#
|
||||
# HAVE_BOOST
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de>
|
||||
# Copyright (c) 2009 Peter Adolphs
|
||||
#
|
||||
# Copying and distribution of this file, with or without modification, are
|
||||
# permitted in any medium without royalty provided the copyright notice
|
||||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 45
|
||||
|
||||
# example boost program (need to pass version)
|
||||
m4_define([_AX_BOOST_BASE_PROGRAM],
|
||||
[AC_LANG_PROGRAM([[
|
||||
#include <boost/version.hpp>
|
||||
]],[[
|
||||
(void) ((void)sizeof(char[1 - 2*!!((BOOST_VERSION) < ($1))]));
|
||||
]])])
|
||||
|
||||
AC_DEFUN([AX_BOOST_BASE],
|
||||
[
|
||||
AC_ARG_WITH([boost],
|
||||
[AS_HELP_STRING([--with-boost@<:@=ARG@:>@],
|
||||
[use Boost library from a standard location (ARG=yes),
|
||||
from the specified location (ARG=<path>),
|
||||
or disable it (ARG=no)
|
||||
@<:@ARG=yes@:>@ ])],
|
||||
[
|
||||
AS_CASE([$withval],
|
||||
[no],[want_boost="no";_AX_BOOST_BASE_boost_path=""],
|
||||
[yes],[want_boost="yes";_AX_BOOST_BASE_boost_path=""],
|
||||
[want_boost="yes";_AX_BOOST_BASE_boost_path="$withval"])
|
||||
],
|
||||
[want_boost="yes"])
|
||||
|
||||
|
||||
AC_ARG_WITH([boost-libdir],
|
||||
[AS_HELP_STRING([--with-boost-libdir=LIB_DIR],
|
||||
[Force given directory for boost libraries.
|
||||
Note that this will override library path detection,
|
||||
so use this parameter only if default library detection fails
|
||||
and you know exactly where your boost libraries are located.])],
|
||||
[
|
||||
AS_IF([test -d "$withval"],
|
||||
[_AX_BOOST_BASE_boost_lib_path="$withval"],
|
||||
[AC_MSG_ERROR([--with-boost-libdir expected directory name])])
|
||||
],
|
||||
[_AX_BOOST_BASE_boost_lib_path=""])
|
||||
|
||||
BOOST_LDFLAGS=""
|
||||
BOOST_CPPFLAGS=""
|
||||
AS_IF([test "x$want_boost" = "xyes"],
|
||||
[_AX_BOOST_BASE_RUNDETECT([$1],[$2],[$3])])
|
||||
AC_SUBST(BOOST_CPPFLAGS)
|
||||
AC_SUBST(BOOST_LDFLAGS)
|
||||
])
|
||||
|
||||
|
||||
# convert a version string in $2 to numeric and affect to polymorphic var $1
|
||||
AC_DEFUN([_AX_BOOST_BASE_TONUMERICVERSION],[
|
||||
AS_IF([test "x$2" = "x"],[_AX_BOOST_BASE_TONUMERICVERSION_req="1.20.0"],[_AX_BOOST_BASE_TONUMERICVERSION_req="$2"])
|
||||
_AX_BOOST_BASE_TONUMERICVERSION_req_shorten=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([[0-9]]*\.[[0-9]]*\)'`
|
||||
_AX_BOOST_BASE_TONUMERICVERSION_req_major=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([[0-9]]*\)'`
|
||||
AS_IF([test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_major" = "x"],
|
||||
[AC_MSG_ERROR([You should at least specify libboost major version])])
|
||||
_AX_BOOST_BASE_TONUMERICVERSION_req_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[[0-9]]*\.\([[0-9]]*\)'`
|
||||
AS_IF([test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_minor" = "x"],
|
||||
[_AX_BOOST_BASE_TONUMERICVERSION_req_minor="0"])
|
||||
_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
|
||||
AS_IF([test "X$_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor" = "X"],
|
||||
[_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor="0"])
|
||||
_AX_BOOST_BASE_TONUMERICVERSION_RET=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req_major \* 100000 \+ $_AX_BOOST_BASE_TONUMERICVERSION_req_minor \* 100 \+ $_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor`
|
||||
AS_VAR_SET($1,$_AX_BOOST_BASE_TONUMERICVERSION_RET)
|
||||
])
|
||||
|
||||
dnl Run the detection of boost should be run only if $want_boost
|
||||
AC_DEFUN([_AX_BOOST_BASE_RUNDETECT],[
|
||||
_AX_BOOST_BASE_TONUMERICVERSION(WANT_BOOST_VERSION,[$1])
|
||||
succeeded=no
|
||||
|
||||
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
dnl On 64-bit systems check for system libraries in both lib64 and lib.
|
||||
dnl The former is specified by FHS, but e.g. Debian does not adhere to
|
||||
dnl this (as it rises problems for generic multi-arch support).
|
||||
dnl The last entry in the list is chosen by default when no libraries
|
||||
dnl are found, e.g. when only header-only libraries are installed!
|
||||
AS_CASE([${host_cpu}],
|
||||
[x86_64],[libsubdirs="lib64 libx32 lib lib64"],
|
||||
[ppc64|powerpc64|s390x|sparc64|aarch64|ppc64le|powerpc64le|riscv64],[libsubdirs="lib64 lib lib64"],
|
||||
[libsubdirs="lib"]
|
||||
)
|
||||
|
||||
dnl allow for real multi-arch paths e.g. /usr/lib/x86_64-linux-gnu. Give
|
||||
dnl them priority over the other paths since, if libs are found there, they
|
||||
dnl are almost assuredly the ones desired.
|
||||
AS_CASE([${host_cpu}],
|
||||
[i?86],[multiarch_libsubdir="lib/i386-${host_os}"],
|
||||
[multiarch_libsubdir="lib/${host_cpu}-${host_os}"]
|
||||
)
|
||||
|
||||
dnl first we check the system location for boost libraries
|
||||
dnl this location ist chosen if boost libraries are installed with the --layout=system option
|
||||
dnl or if you install boost with RPM
|
||||
AS_IF([test "x$_AX_BOOST_BASE_boost_path" != "x"],[
|
||||
AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION) includes in "$_AX_BOOST_BASE_boost_path/include"])
|
||||
AS_IF([test -d "$_AX_BOOST_BASE_boost_path/include" && test -r "$_AX_BOOST_BASE_boost_path/include"],[
|
||||
AC_MSG_RESULT([yes])
|
||||
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include"
|
||||
for _AX_BOOST_BASE_boost_path_tmp in $multiarch_libsubdir $libsubdirs; do
|
||||
AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION) lib path in "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp"])
|
||||
AS_IF([test -d "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp" && test -r "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp" ],[
|
||||
AC_MSG_RESULT([yes])
|
||||
BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp";
|
||||
break;
|
||||
],
|
||||
[AC_MSG_RESULT([no])])
|
||||
done],[
|
||||
AC_MSG_RESULT([no])])
|
||||
],[
|
||||
if test X"$cross_compiling" = Xyes; then
|
||||
search_libsubdirs=$multiarch_libsubdir
|
||||
else
|
||||
search_libsubdirs="$multiarch_libsubdir $libsubdirs"
|
||||
fi
|
||||
for _AX_BOOST_BASE_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
|
||||
if test -d "$_AX_BOOST_BASE_boost_path_tmp/include/boost" && test -r "$_AX_BOOST_BASE_boost_path_tmp/include/boost" ; then
|
||||
for libsubdir in $search_libsubdirs ; do
|
||||
if ls "$_AX_BOOST_BASE_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
||||
done
|
||||
BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path_tmp/$libsubdir"
|
||||
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path_tmp/include"
|
||||
break;
|
||||
fi
|
||||
done
|
||||
])
|
||||
|
||||
dnl overwrite ld flags if we have required special directory with
|
||||
dnl --with-boost-libdir parameter
|
||||
AS_IF([test "x$_AX_BOOST_BASE_boost_lib_path" != "x"],
|
||||
[BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_lib_path"])
|
||||
|
||||
AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION)])
|
||||
CPPFLAGS_SAVED="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
||||
export CPPFLAGS
|
||||
|
||||
LDFLAGS_SAVED="$LDFLAGS"
|
||||
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
|
||||
export LDFLAGS
|
||||
|
||||
AC_REQUIRE([AC_PROG_CXX])
|
||||
AC_LANG_PUSH(C++)
|
||||
AC_COMPILE_IFELSE([_AX_BOOST_BASE_PROGRAM($WANT_BOOST_VERSION)],[
|
||||
AC_MSG_RESULT(yes)
|
||||
succeeded=yes
|
||||
found_system=yes
|
||||
],[
|
||||
])
|
||||
AC_LANG_POP([C++])
|
||||
|
||||
|
||||
|
||||
dnl if we found no boost with system layout we search for boost libraries
|
||||
dnl built and installed without the --layout=system option or for a staged(not installed) version
|
||||
if test "x$succeeded" != "xyes" ; then
|
||||
CPPFLAGS="$CPPFLAGS_SAVED"
|
||||
LDFLAGS="$LDFLAGS_SAVED"
|
||||
BOOST_CPPFLAGS=
|
||||
if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then
|
||||
BOOST_LDFLAGS=
|
||||
fi
|
||||
_version=0
|
||||
if test -n "$_AX_BOOST_BASE_boost_path" ; then
|
||||
if test -d "$_AX_BOOST_BASE_boost_path" && test -r "$_AX_BOOST_BASE_boost_path"; then
|
||||
for i in `ls -d $_AX_BOOST_BASE_boost_path/include/boost-* 2>/dev/null`; do
|
||||
_version_tmp=`echo $i | sed "s#$_AX_BOOST_BASE_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
|
||||
V_CHECK=`expr $_version_tmp \> $_version`
|
||||
if test "x$V_CHECK" = "x1" ; then
|
||||
_version=$_version_tmp
|
||||
fi
|
||||
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
|
||||
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include/boost-$VERSION_UNDERSCORE"
|
||||
done
|
||||
dnl if nothing found search for layout used in Windows distributions
|
||||
if test -z "$BOOST_CPPFLAGS"; then
|
||||
if test -d "$_AX_BOOST_BASE_boost_path/boost" && test -r "$_AX_BOOST_BASE_boost_path/boost"; then
|
||||
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path"
|
||||
fi
|
||||
fi
|
||||
dnl if we found something and BOOST_LDFLAGS was unset before
|
||||
dnl (because "$_AX_BOOST_BASE_boost_lib_path" = ""), set it here.
|
||||
if test -n "$BOOST_CPPFLAGS" && test -z "$BOOST_LDFLAGS"; then
|
||||
for libsubdir in $libsubdirs ; do
|
||||
if ls "$_AX_BOOST_BASE_boost_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
||||
done
|
||||
BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path/$libsubdir"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if test "x$cross_compiling" != "xyes" ; then
|
||||
for _AX_BOOST_BASE_boost_path in /usr /usr/local /opt /opt/local ; do
|
||||
if test -d "$_AX_BOOST_BASE_boost_path" && test -r "$_AX_BOOST_BASE_boost_path" ; then
|
||||
for i in `ls -d $_AX_BOOST_BASE_boost_path/include/boost-* 2>/dev/null`; do
|
||||
_version_tmp=`echo $i | sed "s#$_AX_BOOST_BASE_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
|
||||
V_CHECK=`expr $_version_tmp \> $_version`
|
||||
if test "x$V_CHECK" = "x1" ; then
|
||||
_version=$_version_tmp
|
||||
best_path=$_AX_BOOST_BASE_boost_path
|
||||
fi
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
|
||||
BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
|
||||
if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then
|
||||
for libsubdir in $libsubdirs ; do
|
||||
if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
||||
done
|
||||
BOOST_LDFLAGS="-L$best_path/$libsubdir"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -n "$BOOST_ROOT" ; then
|
||||
for libsubdir in $libsubdirs ; do
|
||||
if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
||||
done
|
||||
if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then
|
||||
version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'`
|
||||
stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
|
||||
stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'`
|
||||
V_CHECK=`expr $stage_version_shorten \>\= $_version`
|
||||
if test "x$V_CHECK" = "x1" && test -z "$_AX_BOOST_BASE_boost_lib_path" ; then
|
||||
AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT)
|
||||
BOOST_CPPFLAGS="-I$BOOST_ROOT"
|
||||
BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
||||
export CPPFLAGS
|
||||
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
|
||||
export LDFLAGS
|
||||
|
||||
AC_LANG_PUSH(C++)
|
||||
AC_COMPILE_IFELSE([_AX_BOOST_BASE_PROGRAM($WANT_BOOST_VERSION)],[
|
||||
AC_MSG_RESULT(yes)
|
||||
succeeded=yes
|
||||
found_system=yes
|
||||
],[
|
||||
])
|
||||
AC_LANG_POP([C++])
|
||||
fi
|
||||
|
||||
if test "x$succeeded" != "xyes" ; then
|
||||
if test "x$_version" = "x0" ; then
|
||||
AC_MSG_NOTICE([[We could not detect the boost libraries (version $1 or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.]])
|
||||
else
|
||||
AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).])
|
||||
fi
|
||||
# execute ACTION-IF-NOT-FOUND (if present):
|
||||
ifelse([$3], , :, [$3])
|
||||
else
|
||||
AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
|
||||
# execute ACTION-IF-FOUND (if present):
|
||||
ifelse([$2], , :, [$2])
|
||||
fi
|
||||
|
||||
CPPFLAGS="$CPPFLAGS_SAVED"
|
||||
LDFLAGS="$LDFLAGS_SAVED"
|
||||
|
||||
])
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue